MFC 消息类型

原创 2016年06月01日 00:03:12

<一>消息的分类

1标准消息

 WM_COMMAND之外,所有以WM_开头的消息。例如WM_CHAR WM_CREATE消息。
  CWnd派生的类,都可以接收到这类消息。CWnd是从CCmdTarget派生而来的,所以CWnd也可以接受命令消息,也可以接受通告消息
n2命令消息
来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。
CCmdTarget派生的类,都可以接收到这类消息。
n3通告消息
 由控件产生的消息,例如,按钮的单击列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND式呈现。
CCmdTarget派生的类,都可以接收到这类消息。



MFC应用程序中传输的消息有三种类型:窗口消息、命令消息和控件通知。  

(1)窗口消息:WM_XXX

      窗口消息(Window Message)一般与窗口的内部运作有关,如:创建窗口、绘制窗口和销毁窗口等。通常,消息是从系统发送到窗口,或从窗口发送到窗口。  

(2)命令消息:WM_COMMAND

      命令消息一般与处理用户请求相关,当用户单击一个菜单项或工具栏时,命令消息产生,并被发送到能处理该请求的类对象(如:装载文件、编辑文本和保存选项等)。  

(3)控件通知:有多种格式
      通常,控件通知在某些重要事件发生时,由控件窗口发送到父窗口,如打开一个组合框。控件通知为父窗口进一步控制子窗口提供了机会。例如,打开一个组合框时,父窗口可以用组合框初建时得不到的消息填充它。  

      BN_XXXX是CButton产生的消息,EN_XXXX是CEdit产生的消息,等等。


MFC 消息类型:

按照消息的范围来分,可以分成四大类消息:

1)  系统消息                                     (0                     到WM_USER–1)

2)  窗口类内部自定义消息         (WM_USER   到WM_APP-1)

3)  应用程序内部自定义消息      (WM_APP      到0xBFFF)

4)  应用程序之间自定义消息      (0xC000                   到0xFFFF)

其中系统消息有可以分成三类: 窗口消息(WM_), 命令消息(WM_COMMAND), 控件通知消息(WM_NOTIFY)。

 

不同的消息使用不同的映射宏:

类型

消息

映射宏

映射函数类型

系统消息

窗口消息WM_

ON_WM_

不同的消息有不同的映射函数。

命令消息WM_COMMAND

ON_COMMAND/

ON_COMMAND_RANGE

Void OnXXX ()/

Void OnXXX (UINT id)

ON_UPDATE_COMMAND_UI/ ON_UPDATE_COMMAND_UI_RANGE

void OxXXX(CCmdUI* pCmdUI)

ON_CONTROL/

ON_CONTROL_RANGE

Void OnXXX ()/

Void OnXXX (UINT id)

ON_CONTROL_REFLECT

Void OnXXX ()

通知消息WM_NOTIFY

ON_NOTIFY

afx_msg void memberFxn ( NMHDR * pNotifyStruct, LRESULT* result );

ON_NOTIFY_REFLECT

afx_msg void memberFxn ( NMHDR * pNotifyStruct, LRESULT* result );

程序内部自定义消息

程序内部#define 的消息

ON_MESSAGE

ON_THREAD_MESSAGE

LRESULT OnXXX (WPARAM wParam, LPARAM lParam)

程序之间消息

RegisterWindowMessage得到的消息

ON_REGISTERED_MESSAGE

ON_REGISTERED_THREAD_MESSAGE

LRESULT OnXXX (WPARAM wParam, LPARAM lParam)

说明:

1)ON_COMMAND 是响应菜单栏,状态栏,工具栏发送给框架窗口的命令消息的宏。命令类型是:CN_COMMAND

2)ON_UPDATE_COMMAND_UI 是响应程序空闲时促发的界面更新消息的宏。

3)ON_CONTROL 是父窗口响应控件发送的通知消息的宏。

4)ON_CONTROL_REFLECT 是子控件响应父窗口反射回来的通知消息的的宏。

5)ON_NOTIFY 是父窗口响应复杂控件发送的通知消息的宏

6)ON_NOTIFY_REFLECT 是复杂子控件响应父窗口反射回来的通知消息的的宏。

7)ON_MESSAGE 是窗口响应自定义的消息的宏

8)ON_THREAD_MESSAGE是线程响应自定义的消息的宏

9)ON_REGISTERED_MESSAGE 是响应通过RegisterWindowMessage注册得到的消息宏。

简单的控件都是通过WM_COMMAND发送通知消息给父窗口。例如:

         Static,Edit,Richedit,Animation,Button,Listbox,ComboBox。

Static

(STN_开头)

STN_CLICKED: ( ON_STN_CLICKED / ON_CONTROL(STN_CLICKED,) )

STN_DBLCLK:  ( ON_ STN_DBLCLK / ON_CONTROL(STN_DBLCLK,) )

STN_ENABLE: 

STN_DISABLE:

Edit

(EN_开头)

EN_SETFOCUS

EN_KILLFOCUS

EN_CHANGE

EN_UPDATE

Button

(BN_开头)

BN_CLICKED

Listbox

(LBN_开头)

LBN_SELCHANGE

LBN_SETFOCUS

Combo Box

(CBN_开头)

CBN_SELCHANGE

CBN_DROPDOWN

CBN_CLOSEUP

CBN_SELENDCANCEL

CBN_SELENDOK

 

对于复杂控件,通过WM_NOTIFY来父窗口。例如:

ListView, Tree View.

List View

(LVN_开头)

LVN_COLUMNCLICK

Tree View

(TVN_开头)

TVN_SELCHANGED

相关文章推荐

MFC消息分类与消息队列

消息分类与消息队列 Windows中,消息使用统一的结构体(MSG)来存放信息,其中message表明消息的具体的类型, 而wParam,lParam是其最灵活的两个变量,为不同的消息类型时,...

MFC中的CDC详细教程(3)

3.拖放画动态直线 下面是一个较完整的拖放动态画直线的例子: // 类变量 class CDrawView : public CView {           //…… protected...
  • faihtua
  • faihtua
  • 2012年12月21日 10:10
  • 7801

MFC,C++ 截屏

分为win32代码和MFC代码,如下 1 void Test_captrueScreenwin32() 2 { 3 HDC hDesktopDc=CreateDC(_T("DI...

MFC 消息类型

1、命令消息(WM_COMMAND)  所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。  2、Window消息(WM_xxx)  所有派生自 CWnd 的类都有资格...
  • vlily
  • vlily
  • 2012年05月03日 15:37
  • 342

MFC 消息类型详解

原文来自:http://blog.tianya.cn/blogger/post_show.asp?BlogID=554498&PostID=8872182   1、命令消息(WM_COMMAND...
  • Ah_Kin
  • Ah_Kin
  • 2013年09月13日 11:51
  • 363

MFC所有WM消息和数据类型总结

hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可 视对象的句柄(窗口、对话框、按钮、编辑框等)。message 用于区别其他消息的常量值,这些常量可以是Win...

MFC 消息类型

1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格接受 ...

MFC所有WM消息和数据类型总结

hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可 视对象的句柄(窗口、对话框、按钮、编辑框等)。message 用于区别其他消息的常量值,这些常量可以是Wind...

MFC 消息类型

1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格接受 WM_xx...
  • skopt
  • skopt
  • 2011年07月21日 21:29
  • 257

MFC 消息类型

1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC 消息类型
举报原因:
原因补充:

(最多只允许输入30个字)