用户可以自定义消息,在应用程序中主动发出,这种消息一般用于应用程序的某一部分内部处理。

实例说明:

当用户按键盘上的光标上移键时,程序发送用户自定义消息,在对应的消息响应函数中弹出消息对话框,显示消息发送成功。

操作步骤:

(1)创建一个单文档应用程序,名为:自定义消息处理。

(2)定义用户消息ID(标识符)值,在视图类的头文件CMyView.h中的前面写如下语句,定义用户消息的标识符:

#endif  //_MSC_VER > 1000

#define WM_MYMESSAGE    (WM_USER + 1)

class CMyView : public CView

{


     }

(3)声明并自定义用户消息响应函数:

单击项目工作区ClassView,展开“自定义消息处理files”,右键单击CMyView,在弹出的快捷菜单中单击Add Member Function,在弹出的对话框中的Function Type(函数类型)处写:void,在Function Declaration(函数声明)处写:OnMyFunction(),这时就将该消息响应函数加到CMyView.cpp中了,并添加代码:

void CMyView::OnMyFunction()

{

MessageBox(“恭喜你,消息发送成功!”);
     }

(4)在视图类的实现文件CMyView.cpp中的消息入口处添加消息映射:

BEGIN_MESSAGE_MAP(CMyView, CView)

//{{AFX_MSG_MAP(CMyView)

ON_MESSAGE(WM_MYMESSAGE, OnMyFunction)

//}}AFX_MSG_MAP

(5)编写程序代码

将WM_KEYDOWN消息响应函数(用户按光标上移键时,将产生该消息)映射到视图类CMyView中,并加代码:

void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{

HWND hWnd = GetSafeHwnd();  //接收消息的窗口句柄

if(nChar == VK_UP)  //光标上移键

{

::PostMessage(hWnd, WM_MYMESSAGE, 0, 0);  //将自定义消息插入消息队列并返回

return ;

}

CView::OnKeyDown(nChar, nRepCnt, nFlags);
     }

(6)编译运行,按键盘上的光标上移键,程序发送自定义消息,弹出一个对话框,如下图所示:

VC++之自定义消息相关推荐

  1. VC++ 实现自定义消息

    mfc中一般是处理Windows自身的消息,如果必要,也可以实现自定义消息: 新建一个对话框工程:添加一个按钮: 在 Resource.h中定义一个消息,标识符为WM_MYMSG:自定义消息从WM_U ...

  2. VC++如何处理自定义消息

    ClassWizard不允许增加用户自定义消息,所以你必须手工输入.输入后,ClassWizard就可以象处理其它消息一样处理你自定义的消息了. 下面是增加自定义消息的步骤: 第一步:定义消息.开发W ...

  3. VC中自定义消息ON_MESSAGE的用法

    在一个对话框mark.cpp中,自定义一个消息, 首先在mark.cpp中添加 #define WM_DATA   WM_USER+100 之后再mark.h里 protected: // Gener ...

  4. VC++ 自定义消息学习总结

    VC添加自定义消息 http://blog.csdn.net/jinnee_cumtb/article/details/4524375     VC的ClassWizard不允许增加用户自定义消息,所 ...

  5. java 自定义消息_Vc中自定义消息及其触发使用

    Vc中自定义消息及其触发使用 如何在VC++中加入自定义消息,我的做法: 这里我以一个对话框为例子,环境:VS 2008,新建一个工程,选择对话框:以编译器给出的对话框为蓝本,自己新建一个按钮如图: ...

  6. MFC 自定义消息四步曲与在参数中传递变量

    今天自己也重学了一下 VC小自定义消息的使用,在网上查阅了相关资料,发现http://hi.baidu.com/atlight/blog/item/11ba969442df6218d21b70cd.h ...

  7. vc中怎么使用SendMessage自定义消息函数

    vc中怎么使用SendMessage自定义消息函数: SendMessage的基本结构如下: SendMessage(     HWND hWnd,  //消息传递的目标窗口或线程的句柄.     U ...

  8. VC自定义消息postmessage用法(消息响应函数)

    VC 自定义消息 postmessage用法 1. 在 resource.h文件添加如下代码 定一个自己的消息 #define WM_MY_MESSAGE WM_USER + 100 //------ ...

  9. c语言调用Windows自定义消息,VC自定义消息postmessage用法(消息响应函数)

    VC 自定义消息 postmessage用法 1. 在 resource.h文件添加如下代码 定一个自己的消息 #define WM_MY_MESSAGE WM_USER + 100 //------ ...

最新文章

  1. “悬空指针”和“野指针”究竟是什么意思?有什么区别
  2. 计算机组成原理mbps,2016年湖北师范学院计算机组成原理(同等学力加试)复试笔试仿真模拟题...
  3. Pycharm运行项目代码时输入可选参数
  4. 大学应届毕业生面临的压力和应对办法
  5. fast虚拟服务器ip地址设置,迅捷路由器静态ip怎么设置_迅捷固定IP地址怎么设置?-192路由网...
  6. Error running SecureCardJavaApp. Command line is too long. Shorten the command line and rerun.
  7. 关于微信公众号自动回复文本、图片以及图文
  8. vue2与vue3的实例销毁,有什么区别。
  9. uni-app 全局变量的几种实现方式
  10. linux带source地址ping,实战经验:Linux Source NAT在Ping场景下的应用
  11. 利用OPENCV创作梵高艺术风格图片
  12. 像中文的罗马音字体复制_罗马音大全可复制app中文下载
  13. Linux系统挂起之后退出的方法
  14. 网站的架构CS和中间件
  15. 放假倒计时弹幕单页网站源码
  16. python与人工智能课程设计_人工智能+机器人入门与实战:用树莓派+Python+OpenCV制作计算机视觉机器人...
  17. Web打印--Lodop使用手册install_lodop.exe
  18. 2019软件测试自学必看
  19. python百钱买百鸡代码_python解决百钱买百鸡
  20. Web前端学习第五周

热门文章

  1. 关于 Java 性能调优的 11个简单技巧,多少人知道?
  2. 不是技术也能看懂容器技术与容器平台
  3. JavaWeb-Spring中注解大全与详解
  4. Android: Bundle机制
  5. redis:RDM连接阿里云redis服务器
  6. Redis:内存满了的解决方案
  7. vue的post请求data可以传两个参吗_我知道的HTTP请求
  8. windows c语言能分配多少内存,Windows下C语言程序的内存布局(内存模型)
  9. r语言 断轴 画图_R 绘图 – 函数曲线图 | 菜鸟教程
  10. 数据中心IT机房末端气流组织管理