可以看出.这两个宏就是对声明的两个宏的实现. 而上面我们添加的ON_WM_LBUTTONDOWN 就是放在 END_MESSAGE_MAP 上面的. 我们看一下格式. 代码语言:javascript 复制 constAFX_MSGMAP*CMainWnd::GetMessageMap()const{returnGetThisMessageMap();}constAFX_MSGMAP*PASCALCMainWnd::GetThisMessageMap(){typedef CMain...
// 1、DECLARE_MESSAGE_MAP()// 2、BEGIN_MESSAGE_MAP()(theClass,baseClass)// 3、END_MESSAGE_MAP() DELCARE_MESSAGE_MAP DECLARE_MESSAGE_MAP()宏展开: #defineDECLARE_MESSAGE_MAP()private:staticconstAX_MSGMAP_ENTRY _messageEntries[];protected:staticAFX_DATAconstAFX_MSGMAP messageMap;virtualconstAFX...
1. DECLARE_MESSAGE_MAP 声明宏.放在类中 2. BEGIN_MESSAGE_MAP 实现宏放在类实现外 3. END_MESSAGE_MAP 实现宏放在类外面 如何添加消息. 如果我们添加了 BEGIN 跟 END 两个宏之后. 我们在中间添加他们的消息就可以. 例如: BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd) //两个参数.第一个是自己的类.第二个是...
DECLARE_MESSAGE_MAP END_MESSAGE_MAP 显示另外 13 个 为了支持消息映射,MFC 提供了以下宏: 消息映射声明和分界宏 名称描述 DECLARE_MESSAGE_MAP声明将在类中使用消息映射来将消息映射到函数(必须在类声明中使用)。 BEGIN_MESSAGE_MAP开始消息映射的定义(必须在类实现中使用)。
Map消息 由于Windows是面向消息的操作系统,因此Windows环境的大部分编程都涉及消息处理,每一个事件,例如一个键盘或鼠标点击发生时,一个消息被发送到该应用程序,然后必须处理该事件。 要让编译器管理消息,应将它们包含在类定义中。 应该在类定义的末尾提供 DECLARE_MESSAGE_MAP 宏,如以下代码所示。
DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CMFCApplication1Dlg 对话框 ...
2.2 DECLARE_MESSAGE_MAP 声明类定义消息映射。CCmdTarget程序中的每个派生类必须提供消息映射来处理消息。 DECLARE_MESSAGE_MAP( ) 1. 备注 在类声明的末尾使用 DECLARE_MESSAGE_MAP 宏。 然后,在定义类的成员函数的 .cpp 文件中,使用 BEGIN_MESSAGE_MAP 宏、每个消息处理函数的宏项和 END_MESSAGE_MAP 的宏。
在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间,使用ON_MESSAGE、ON_WM_XXX等宏来添加具体的消息处理函数映射。 例如,假设要添加对WM_LBUTTONDOWN消息的处理: 打开类的头文件。 在类的声明中添加DECLARE_MESSAGE_MAP()。 在类的实现文件中,使用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏将消息映射表的定义包围起来。 在...
DECLARE_MESSAGE_MAP() } mfc.cpp //定义消息宏,在类中实现(派生类,父类) BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd) ON_WM_LBUTTONDOWN END_MESSAGE_MAP() //重写构造函数 MyFrame::MyFrame(){ //创建窗口 Create(NULL,TEXT("mfc")); } 对应的处理函数分别在类中声明,类外定义 ...
DECLARE_MESSAGE_MAP() BEGIN_MESSAGE_MAP(本类, 基类) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) END_MESSAGE_MAP() 加入链表 AfxWndProc (只有发向窗口才会被调用),此函数 将使用HWND 在 mfc库的全局变量中 找到句柄映射表,转为 CWnd 型 ,最终使用 派生类的对OnCmdMsg()的重载 来实现 不同的路由 ...