MFC中的三类消息

在MFC应用程序中消息主要有三种类型:标准(窗口)消息、命令消息和控件消息(通知)。

1、标准(窗口)消息:窗口消息一般与窗口内部运作有关,如创建窗口,绘制窗口,销毁窗口,通常,消息是从系统发到窗口,或从窗口发到系统。发送函数SendMessage()或者PostMessage()。除WM_COMMAND之外,所有的以WM_开头的消息。从CWnd派生的类,都可以接受到这类消息。注意:标准消息并不需要我们指定处理函数名称,是默认的对应关系。 

宏名称 对应消息 消息处理函数 
ON_WM_CHAR WM_CHAR OnChar 
ON_WM_CLOSE WM_CLOSE OnClose 
ON_WM_CREATE WM_CREATE OnCreate 
ON_WM_DESTROY WM_DESTROY OnDestroy 
ON_WM_LBUTTONDO WNWM_LBUTTONDOWN OnLButtonDown 
ON_WM_LBUTTONUP WM_LBUTTONUP OnLButtonUp 
ON_WM_MOUSEMOVE WM_MOUSEMOVE OnMouseMove 
ON_WM_PAINTWM_PAINT OnPaint 

2、命令消息:命令消息通常与处理用户请求有关,当用户单击一个菜单或工具栏时,命令消息就产生了。并发送到能处理该消息的类或函数(如装载文本,保存选项等)这类消息都以WM_COMMAND呈现。在MFC中,通过菜单标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别,其wParam 记录着该消息来自哪一个菜单项目。 

ON_COMMAND(IDM_ABOUT, OnAbout) 
ON_COMMAND(IDM_FILENEW, OnFileNew) 
ON_COMMAND(IDM_FILEOPEN, OnFileOpen) 
ON_COMMAND(IDM_FILESAVE, OnFileSave) 

3、控件消息:由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息是以WM_NOTIFY形式呈现。
控件宏 消息处理函数 
Button ON_BN_CLICKED(<id>,<memberFxn>) memberFxn 
ComboBox ON_CBN_DBLCLK(<id>,<memberFxn>) memberFxn 
Edit ON_EN_SETFOCUS(<id>,<memberFxn>) memberFxn 
ListBox ON_LBN_DBLCLK(<id>,<memberFxn>) memberFxn 


MFC命令消息的路由:AfxWndProc(替换了窗口过程函数)->AfxCallWndProc->WindowProc->OnWnddMsg->(如果是命令消息则调用Oncommand;如果是通知消息则调用OnNotify)->OnCmdMsg 。

 

猜你喜欢

转载自blog.csdn.net/ywxk1314/article/details/81110528