jujiawu1024
jujiawu1024
采纳率97.3%
2016-04-01 15:01

MFC中关于消息映射函数定义的问题

已采纳

MFC中有那么多的消息,每个消息都要定义一个消息映射函数么?能不能简化到一个函数中定义,消息函数和普通函数的区别是什么?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 5年前
    点赞 1 评论 复制链接分享
  • stadyhungry you都是我的 5年前

    消息映射的作用就是告诉系统我们关心哪一些消息,当这样的消息产生时就调用我们自己写的的消息响应函数,比如下面的消息映射:

    BEGIN_MESSAGE_MAP(MessageMapDlg, CDialogEx)
        ON_BN_CLICKED(IDC_BTN_1, OnBnClicked_Hello)
        ON_BN_CLICKED(IDC_BTN_2, OnBnClicked_Hello)
    END_MESSAGE_MAP()
    

    我们自己的消息响应函数:

     void MessageMapDlg::OnBnClicked_Hello()
    {
        // TODO: 在此添加控件通知处理程序代码
        MessageBox(_T("Hello!"));
    }
    

    当我们点击按钮1(IDC_BTN_1)或者按钮2(IDC_BTN_2)时就会发送_BN_CLICKED消息,而这个消息正是我们通过消息映射ON_BN_CLICKED告诉系统我们关心的也是这个消息,系统检测到这个消息后就会调用我们的OnBnClicked_Hello函数,从而弹出一个消息框显示“Hello!”。
    消息响应函数(OnBnClicked_Hello)和普通函数没有什么区别,前者是产生特定消息后被执行的函数,后者是我们想调用的时候自己调用的。

    点赞 评论 复制链接分享

相关推荐