首页 > 其他 > 详细

消息映射机制

时间:2020-03-27 22:33:20      阅读:61      评论:0      收藏:0      [点我收藏+]

一、介绍

消息映射是一个将消息和成员函数相互关联的表。比如,框架窗口接收到一个鼠标左击消息,MFC将搜索该窗口的消息映射,如果存在一个处理 WM_LBUTTONDOWN 消息的处理程序,然后就调用 OnLButtonDown

二、具体实现

1、所操作类中,声明消息映射宏

//mfc.h:
class MyFrame:public CFrameWnd //窗口框架类
{
public:
    MyFrame();
    //声明宏 提供消息映射机制
    DECLARE_MESSAGE_MAP();
  afx_msg void OnLButtonDown(UINT, CPoint);

    afx_msg void OnChar(UINT, UINT, UINT);

    afx_msg void OnPaint(); };

2、通过放置标识消息的宏来执行消息映射,相应的类将在对 BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 的调用之间处理消息

//mfc.cpp:
//分界宏
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)
    ON_WM_LBUTTONDOWN() //鼠标左键按下
    ON_WM_CHAR() //键盘
    ON_WM_PAINT() //绘图
END_MESSAGE_MAP()

MyFrame::MyFrame()
{
    Create(NULL, TEXT("mfc"));
}

void MyFrame::OnLButtonDown(UINT, CPoint point)
{
    /*TCHAR buf[1024];
    wsprintf(buf, TEXT("x = %d,y = %d"), point.x, point.y);

    MessageBox(buf);*/

    CString str;
    str.Format(TEXT("x = %d,y = %d"), point.x, point.y);
    MessageBox(str);

}

void MyFrame::OnChar(UINT key, UINT, UINT)
{
    CString str;
    str.Format(TEXT("按下了%c键"), key);

    MessageBox(str);
}

void MyFrame::OnPaint()
{
    CPaintDC dc(this); //CDC里找其他的能画的图形

    dc.TextOutW(100, 100, TEXT("为了部落"));

    //画椭圆
    dc.Ellipse(10, 10, 100, 100);
}

3、对应的消息处理函数分别在类中定义,类外声明

 

消息映射机制

原文:https://www.cnblogs.com/yanchaoyi/p/12584420.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!