MFC消息处理与映射技术详解.pdfVIP

  • 0
  • 0
  • 约3.52千字
  • 约 7页
  • 2026-02-13 发布于北京
  • 举报

知识点列表

编号

名称

描述

级别

1

MFC消息处理

在窗口类中实现消息的处理

**

2

MFC消息映射

引入MFC的消息映射机制,简化用户对消息的处理

***

3

MFC消息的分类,以及不同消息映射的实现

根据对消息的处理方式不同将消息分为四类,以及每一类消息的实现过程

***

注:“”理解级别“”掌握级别“***”应用级别

目录

1MFC消息处理

1.1WINDOWS消息机制…..-3-

1.2MFC消息机制

2MFC消息映射

2.1消息映射的添加…..-3-

2.2消息宏的实现…..-4-

2.2.1数据类型

2.2.2代码…..-5-

2.2.3消息宏的实现-代码说明

2.2.4消息映射的处理过程

3MFC消息分类

3.1窗口消息

3.2命令消息

3.3消息

3.4自消息9-

1MFC消息处理

1.1Windows消息机制

应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口

1.2MFC消息机制

使用MFC框架编程时,消息发送和处理的本质仍然是Windows消息机制,MFC简

化了程序员编程时处理消息的复杂性。

2MFC消息映射

MFC消息映射的引入,避免了将消息处理全部放在同一函数中处理,将原来的庞

大的switch-case结构简化为一个消息映射为一个处理函数。

2.1消息映射的添加

在FrameWnd添加消息宏定义

DECLARE_MESSAGE_MAP

添加消息宏实现

EGIN_MESSAGE_MAP(theClass,parentClass)

END_MESSAGE_MAP()

添加消息处理函数

afxmsgLRESULTOnPaint(RAMram,LPARAMlParam);

添加消息和处理函数的对应

ONMESSAGE(WM_PAINT,OnPaint)

练习1用消息映射代替WindowProc实现简单的窗口消息

2.2消息宏的实现

2.2.1数据类型

AFX_MSGMAP_ENTRY结构

用于保存消息ID与对应函数指针及相关的信息

structAFX_MSGMAP_ENTRY{

UINTnMessage;//消息ID

UINTnCode;//代码

UINTnID;//控件的ID

UINTnLastID;//控件的ID范围的最后

UINTnSig;//操作类型或pfn函数类型

AFX_PMSGpfn;//消息处理函数的函数指针

};

AFX_MSGMAP结构

用于保存GetBaseMap的函数地址,AFX_MSGMAP_ENTRY数

组的地址.

structAFX_MSGMAP

{

//函数指针

constAFX_MSGMAP*(PASCAL*pfnGetBaseMap());

//AFX_MSGMAP_ENTRY类型指针

constAFX_MSGMAP_ENTRY*lpEntries;

};

2.2.2代码

在类中添加消息宏的定义代码

classCMsgFrame:publicCMainFrame

{

private:

staticconstFX_MSGMAP_ENTRY_messageEntries[];

protected:

staticAFX_DATAconstAFX_MSGMAPmessageMap;

staticconstAFX_MSGMAP*PASCAL_GetBaseMessageMap();

virtualconstAFX_MSGMAP*GetMessageMap()const;

}

消息宏所对应类的实现代码

classCMsgFrame:publicCMainFrame{private:

staticconstFX_MSGMAP_ENTRY_messageEntries[];protected:

staticAFX_DATAconstAFX_MSGMAPmessageMap;

staticconstAFX_MSGMAP\*PASCALGetBaseMessageMap();virtualconstAFX_MSG

MAP\*GetMessageMap()const;

2.2.3消息宏的实

文档评论(0)

1亿VIP精品文档

相关文档