通过消息映射机制来响应鼠标事件(即消息):
VC精华教程:MFC入门系列(二)
MFC的两个基本类CWinApp类和CFrameWnd类,一个应用程序类和框架类。
现在消息映射机制来完成鼠标的响应事件(即消息):
一,通过函数来响应该事件,
SDK中处理消息和MFC中处理消息的区别:
1.SDK通过WinProc函数统一处理消息,用switch-case来区别每个消息。
2.MFC将SDK的这些switch-case封装成宏。
在MFC中提供了四个宏
嵌套
DECLARE_MESSAGE_MAP
BEGIN_MESSAGE_MAP
END_MESSAGE_MAP
//
ON_COMMAND
。第一个宏DECLARE_MESSAGE_MAP是BEGIN_MESSAGE_MAP和END_MESSAGE_MAP的申明,就是在类里面声明一些函数。BEGIN_MESSAGE_MAP和END_MESSAGE_MAP这两个是函数的实现,那么在这个函数的实现是用ON_COMMAND这个宏来定义具体的消息和消息对应的函数。那我们继续使用上一次我们做的程序,我们在其中添加消息映射
#include /*********************************************///框架类用来在构造函数中创建窗口/*********************************************/class sample:public CFrameWnd{public: //构造函数 sample(){ Create(NULL,"MFC DEMO2"); } //通过消息映射机制来响应鼠标事件(即消息): void OnLButtonDown(UINT,CPoint)//添加的消息处理函数 { ::MessageBox(NULL,"ddd","dd",MB_OK); } DECLARE_MESSAGE_MAP()//消息映射的申明};/*************开始*************************/BEGIN_MESSAGE_MAP(sample,CFrameWnd)//这个宏是一个带参数的宏,填写两个参数,一个子类,一个父类ON_WM_LBUTTONDOWN()//左键按下的事件END_MESSAGE_MAP()//结束宏/*********************************************///应用程序类用来控制整个应用程序/*********************************************/class App:public CWinApp{public: BOOL InitInstance(); BOOL ExitInstance(); };/*********************************************///用来实例化,像WinMain函数BOOL App::InitInstance(){ //定义并初始化sample指针变量 sample *obj=new sample; //赋予CWinThread类中m_pMainWnd变量 m_pMainWnd=obj; //显示窗口 obj->ShowWindow(SW_SHOWMAXIMIZED); return TRUE;}/*********************************************///退出实例BOOL App::ExitInstance(){ return TRUE;}//****************************************//定义全局变量App a;
阅读(703) | 评论(0) | 转发(0) |