mfc

MFC 利用工作线程 刷新 界面

谁都会走 提交于 2020-03-12 10:37:01
(1)有时候需要在MFC中开启一个工作线程来处理数据,数据处理中可能需要刷新界面对应的显示,则可以通过在工作线程中发送消息来更新界面 下面给出了一个案例 #pragma once #include <afxwin.h> class Myapp : public CWinApp //WinApp应用类 { public: //程序入口 virtual BOOL InitInstance(); }; class MyFrame :public CFrameWnd //应用程序窗口框架类 { public: MyFrame(); public: afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); DECLARE_MESSAGE_MAP() // 重绘block void ReDrawBlock(CDC &DC); // 可控制的颜色块 CPoint block = CPoint(300, 300); public: CWinThread*

关于MFC在静态文本中显示ICON

隐身守侯 提交于 2020-03-11 09:17:52
我们有时候在使用MFC的时候想要某些控件能显示机器设备的运行状态,例如三色灯的指示效果,个人的思路是在界面上用静态文本框去加载一个ICON或者是BMP图片,就是说贴图,不知道大家有没有更好的思路.既然有了思路那就开始吧,具体如下来完成. 如何实现static加载icon,加载bmp基本上类似,我们首先想到的是在静态文本框里面绘制ICON,是SetIcon函数,但是开始我使用这个函数函数没有成功,因为他的参数是一个句柄HICON,那么我们就先要获取他的句柄用以下方法,分为4步,我已经验证过: 1.HICON hicon1 = LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON_GREEN));//获取icon的句柄,这里的IDI就是我们要显示的ICON的ID; 2.CStatic *pStatic1=(CStatic*)GetDlgItem(IDC_STATIC_I1);//定义一个指向静态文本框的指针,这里的IDC是我们静态文本的ID; 3.pStatic1-> ModifyStyle(0x0,SS_ICON|SS_CENTERIMAGE); //设置icon的风格; 4.pStatic1-> SetIcon(hicon1); //调用设置ICON的函数 来源: https://www.cnblogs.com

MFC ListControl使用方法

倖福魔咒の 提交于 2020-03-08 11:12:38
在原来博客中有: MF CListControl 简单功能使用 推荐文章: MFC类CtrlList用法 今天又又一次来介绍点新东西:双击击listcontrol 做出响应。当然你能够做的还有非常多,比方显示点击的行列,右键点击,后面代码都有。没有截图了 主要有 1 插入数据 2 得到 listctrl 中全部行的 checkbox 的状态 3 得到 listctrl 中全部选中行的序号 4 对数据做出双击处理与推断 1插入数据显示(參考后面代码) 2双击有数据的区域(參考后面代码)做出响应 3 响应成功提示 部分參考代码 头文件。 #pragma once #include "afxcmn.h" #include "afxwin.h" // cpagebg 对话框 class cpagebg : public CDialogEx { DECLARE_DYNAMIC(cpagebg) public: cpagebg(CWnd* pParent = NULL); // 标准构造函数 virtual ~cpagebg(); // 对话框数据 enum { IDD = IDD_DIALOGBG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP()

MFC的消息机制

橙三吉。 提交于 2020-03-07 08:56:29
  众所周知,windows是基于消息驱动的,作好消息处理是WINDOWS编程的关键任务之一,用VC制作WINDOWS程式同样离不开消息的处理。这就要求我们对 VC中消息的处理有一个比较清淅的认识。只有这样才可能在必要的时候亲自动手完成一些复杂的消息映射处理。   在MFC中消息是通过一种的消息映射机制来处理的。其实质是一张消息及其处理函数的一一对应表以及分析处理这张表的应用框架内部的一些程序代码.这样的好处是可以避免像早期的SDK编程一样需要罗列一大堆的CASE语句来处理各种消息。由于不同种类的消息其处理方法是不同的,所以我们有必要先弄清楚 WINDOWS消息的种类。    WINDOWS 消息的种类:   1、标准WINDOWS消息:这类消息是以WM_为前缀,不过WM_COMMAND例外。 例如: WM_MOVE、WM_QUIT等。   2、命令消息:命令消息以WM_COMMAND为消息名。在消息中含有命令的标志符ID,以区分具体的命令。由菜单,工具栏等命令接口对象产生。   3、控件通知消息:控件通知消息也是以WM_COMMAND为消息名。由编辑框、列表框和子窗口发送给父窗口的通知消息。在消息中包含控件通知码,以区分具体控件的通知消息。   其中从CWnd派生的类可以接受上面的三种消息,从CCmdTarget派生的类能够接收命令消息

《基于MFC的OpenGL编程》Part 12 Creating and Using Display Lists

末鹿安然 提交于 2020-03-05 23:05:43
本文对 第 11 篇文章 进行修改,使用显示列表来存储渲染命令。 显示列表 OpenGL provides a facility to create a preprocessed set of OpenGL commands called a display list. Creating a display list is a straight forward process. We just have to delimit the display list code with glNewList and glEndList. The display list is named by an integer and this name is used to call the list to be executed later on. Display lists are very useful for scenes which have lot of geometry that don't change in from frame to frame. If we have to rerender something that doesn't change it is not worth going through all the calculations required once

在MFC中开发新的控件——Control

人走茶凉 提交于 2020-03-05 01:22:11
众所周知,在MFC编程模式下,我们的应用程序界面是由窗口和控件组成,实际上,控件也是窗口,是一种特殊的窗口。而MFC已经为我们准备了一些基础的控件,例如:按钮,编辑框,and so on,但是在我们的大型软件开发中,这些控件是不够的。 本文开发一种画图控件为导向,来说明其开发方法。 查看MFC源码,我们发现,按钮控件(Cbutton)是公有继承于 CWnd类的,如下面的代码:(只摘抄了一部分) class CButton : public CWnd { DECLARE_DYNAMIC(CButton) // Constructors public: CButton(); virtual BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); }; 一般我们在窗口增加控件时,最常用的是可视化操作——也就是直接用鼠标拖拽。还有一种是动态创建,也就是用上面的Create(),(不过比较繁杂,用的较少)。 下面直接给出我开发的控件代码: // Header Files class CMapping2 : public CWnd { public: CMapping2(); ~CMapping2(); public: DECLARE_MESSAGE_MAP()

Is it not possible to add our own menu items on the CHtmlView context menu?

半城伤御伤魂 提交于 2020-03-04 20:50:39
问题 So I keep coming back to this article on CodeProject: https://www.codeproject.com/Articles/4758/How-to-customize-the-context-menus-of-a-WebBrowser I then realised this statement at the top of the article: The revised sample projects are using a new , much better customization approach that is going to be comprehensively discussed in the next update of this article, which will hopefully be ready in a couple of weeks. I am publishing this semi-documented and not fully-tested code, because I am

Is it not possible to add our own menu items on the CHtmlView context menu?

北慕城南 提交于 2020-03-04 20:50:04
问题 So I keep coming back to this article on CodeProject: https://www.codeproject.com/Articles/4758/How-to-customize-the-context-menus-of-a-WebBrowser I then realised this statement at the top of the article: The revised sample projects are using a new , much better customization approach that is going to be comprehensively discussed in the next update of this article, which will hopefully be ready in a couple of weeks. I am publishing this semi-documented and not fully-tested code, because I am

MFC:常用的消息

吃可爱长大的小学妹 提交于 2020-03-02 18:08:05
常用的Windows消息 ON_WM_CHAR(从键盘输入字符)----void A::OnChar(UINT nChar,UINT nRepCnt,UINT nFlags) ON_WM_COMMAND(用户选择菜单内的某项,或者是控件给其父类发送了一个通知) ----void A::OnCommand(WPARAMwParam,LPARAM lParam) ON_WM_CREATE(生成窗口)----void A::OnCreate(LPCREATESTRUCT lpCreateStruct) ON_WM_DESTROY(撤销窗口)----void A::OnDestroy() ON_WM_LBUTTONDOWN(按下鼠标左键)----void A::OnLButtonDown(UINT nFlags,CPoint point) ON_WM_LBUTTONUP(释放鼠标左键)----void A::OnLButtonUp(UINT nFlags,CPoint point) ON_WM_MOUSEMOVE(移动鼠标指针)----void A::OnMouseMove(UINT nFlags,CPoint point) ON_WM_PAINT(窗口需要重新绘制)----void A::OnPaint() ON_WM_CLOSE(应用程序结束)----void A::OnClose()

Is there a better way to declare a char-type appropriate instance of a CStringT<> than

﹥>﹥吖頭↗ 提交于 2020-03-02 08:15:33
问题 What I am trying to get at is a function that generates an instance of a CStringT<> that is appropriate for a given type of character (char or wchar_t). Here's a contrived example: #include <atlstr.h> template <typename CHAR_T> inline CStringT< CHAR_T, ATL::StrTraitATL< CHAR_T, ATL::ChTraitsCRT< CHAR_T > > > AsCString(const CHAR_T * psz) { return CStringT< CHAR_T, ATL::StrTraitATL< CHAR_T, ATL::ChTraitsCRT< CHAR_T > > >(psz); } I can certainly use the above (it appears to compile), but it