在MFC中如何自定义消息及相应事件(VC6.0及VS2005)

2012-01-01 16:42:18|  分类: VS2005&VC++ |  标签:自定义消息  message   |字号大中小 订阅

首先是VS2005这个开发环境:

自定义消息的步骤如下:
(1)建立Single Document的MFC Application,工程名为:MyMessage
(2)自定义消息:
第一步:定义消息
在Resource.h中添加如下代码:

//推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。
#define WM_MY_MESSAGE (WM_USER+100)
第二步:声明消息处理函数
选择CMainFrame类中添加消息处理函数
在MainFrm.h文件中,类CMainFrame内(其实就是你想要进行响应的窗体类),声明消息处理函数,代码如下:

protect:
    afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

PS:返回类型必须是LRESULT,不然是void等等类型。

第三步:实现消息处理函数
在MainFrm.cpp文件中添加如下代码:

LRESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
      //TODO: Add your message handle code
      return 0;
}
 第四步:在CMainFrame类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    ON_WM_CREATE()
    ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
    //ON_REGISTERED_MESSAGE (WM_MY_MESSAGE,OnMyMessage)
END_MESSAGE_MAP()
 如果用户需要一个定义整个系统唯一的消息,可以调用SDK函数RegisterWindowMessage定义消息:
在Resource.h中将代码

#define WM_MY_MESSAGE (WM_USER+100)
替换为:

static UINT WM_MY_MESSAGE=RegisterWindowMessage(_T("User"));
并使用ON_REGISTERED_MESSAGE宏指令取代ON_MESSAGE宏指令,其余步骤同上。
注:如果仍然使用ON_MESSAGE宏指令,compile可以通过,但是无法响应消息。
当需要使用自定义消息时,可以在相应类中的函数中调用函数PostMessage或SendMessage发送消息PoseMessage(WM_MY_MESSAGE,0,0)。

VC6.0开发环境:

区别:

返回类型可以是void类型,这个可以参见孙鑫老师的第十五课讲解。

在MFC中如何自定义消息及相应事件(VC6.0及VS2005)相关推荐

  1. MFC中使用自定义消息 .

    HTML Tags and JavaScript tutorial MFC中使用自定义消息 MFC中使用自定义消息 消息映射.循环机制是Windows程序运行的基本方式.VC++ MFC 中有许多现成 ...

  2. vc6.0转vs2005中字符串的问题

    简单一点:就是project->Property->Configuration Property-->general-->Character Set:No Set即可.详细分析 ...

  3. 如何让MFC编写的应用程序(用VC6.0开发)能在别的电脑上运行

    把应用程序做成Release版的应用程序,具体步骤如下: 菜单Build->SetActiveConfigure,在弹出对话框中选择Win32Release,点OK,然后 菜单project-& ...

  4. c语言中执行cl exe时出错,VC6.0执行cl.exe时出错

    2016-07-17 回答 2010-10-09 18:29解决vc++6.0卸载后不能安装问题 电脑上的vc++6.0,无法调试程序,卸载后总是安装不成功.这是由于注册表没有清理完全的缘故.附上解决 ...

  5. MFC中关于UINT与USHORT

    在C, C++中不存在UINT这个关键字,UINT类型是unsigned int派生出来的 int是带符号的,表示范围是:-2147483648 到 2147483647 uint是不带符号整形,表示 ...

  6. MFC中的UINT与USHORT

    注:转自samkieth的csdn博客  点击打开链接    在C, C++中不存在UINT这个关键字,UINT类型是unsigned int派生出来的 int是带符号的,表示范围是:-2147483 ...

  7. MFC中动态创建控件以及事件响应实现方法

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...

  8. MFC中动态创建控件以及添加事件响应

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...

  9. MFC中动态创建button及添加响应事件

    MFC中动态创建button及添加响应的事件,主要步骤如下:  1.在头文件(**Dlg.h)中添加一个CButton类型,  例如:CButton btn;  2.在(**Dlg.cpp)的OnIn ...

最新文章

  1. java包装_Java基础之神奇的包装类(一)
  2. 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)
  3. nyist -- 组队赛(一)
  4. some understandings about 《Learning representations by back-propagating errors》
  5. 文档根元素 project 必须匹配 doctype 根 null_快评:全新MG5上市6.49万起,但买它必须准备10万?...
  6. 用生产者和消费者模式实现奇数偶数不同线程交替输出
  7. 以太网抓包数据报头长度
  8. matplotlib中文乱码的两种解决方案
  9. 上海地图全图可放大_中国地图高清版可放大图片 山地高原和丘陵约占陆地面积的...
  10. ios订阅其他国家节假日日历
  11. 第26章 站在巨人肩膀上——游戏引擎技术导论
  12. Unable to read entire header; 80 bytes read; expected 512 bytes
  13. 耿建超英语语法---陈述句(1)
  14. (真实经验)我干了5年的JAVA面试官,发现很多求职者都忽略这七大方面的问题!
  15. 小米蓝牙温度计2接入home assistant
  16. 驾照科目一速过技巧--2023年
  17. 单页面自动赚钱无敌策略
  18. Neural Collaborative Filtering(NCF) 代码实战(Keras)
  19. 卷毛机器人抢大龙视频_世界第一机器人卷毛梦回S2 钩子抢大龙 直言钻一像人机...
  20. 2657 windy数

热门文章

  1. 计算机与材料科学论文2000字,材料科学前沿与商业应用论文模板_材料科学与工程导论的认识3000字_大一材料专业导论论文2000字...
  2. 电厂人员定位系统之两票管理
  3. Android 插入有米广告出错 java.lang.NoClassDefFoundError: net.youmi.android.AdManager
  4. requery.js
  5. 阿里巴巴云原生,在许诺云计算一个什么样的未来?
  6. 外卖券儿外卖券儿小程序,美团外卖优惠券免费领取 ?(美团饿了么外卖cps小程序)
  7. python浪漫文艺_从零开始,如何用python定时更新炫酷文艺的桌面背景
  8. 网络多人游戏架构与编程 学习笔记 第二章
  9. 年轻人会得白内障吗?
  10. office和python二级哪个更有用_ms office二级和一级区别