Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1608561
  • 博文数量: 585
  • 博客积分: 14610
  • 博客等级: 上将
  • 技术积分: 7402
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-15 10:52
文章存档

2013年(5)

2012年(214)

2011年(56)

2010年(66)

2009年(44)

2008年(200)

分类:

2009-05-31 12:46:37

     通过消息映射机制来响应鼠标事件(即消息):

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;
阅读(661) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~