关闭

MFC 消息类型

606人阅读 评论(0) 收藏 举报
分类:

<一>消息的分类

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

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16172次
    • 积分:598
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:9篇
    • 译文:0篇
    • 评论:1条
    最新评论