VC++之自定义消息
用户可以自定义消息,在应用程序中主动发出,这种消息一般用于应用程序的某一部分内部处理。
实例说明:
当用户按键盘上的光标上移键时,程序发送用户自定义消息,在对应的消息响应函数中弹出消息对话框,显示消息发送成功。
操作步骤:
(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++之自定义消息的更多相关文章
- VC++ WINDOWS自定义消息范围
WINDOWS自定义消息WM_USER和WM_APP WM_USER常量是Windows帮助应用程序定义私有窗口类里的私有消息,通常使用WM_USER+一个整数值,但总值不能超过0x7FFF(十进制: ...
- 【转】vc中使用SendMessage正确发送自定义消息的方法--不错
原文网址:http://zhoumf1214.blog.163.com/blog/static/5241940200910265532959/ 最近在用VC2008做开发,后来由于要用到消息的发送,而 ...
- C++ vc中怎么使用SendMessage自定义消息函数
vc中怎么使用SendMessage自定义消息函数: SendMessage的基本结构如下:SendMessage( HWND hWnd, //消息传递的目标窗口或线程的句柄. UINT ...
- vc中使用SendMessage正确发送自定义消息的方法
最近在用VC2008做开发,后来由于要用到消息的发送,而且需要自定义消息,在网上查找了很多例子,根据他们所说的,虽然大致都差不多,但是基本上没有 一个能完全做出来的.要知道VC编程有一个小地方出错,都 ...
- VC++中使用用户自定义消息及自定制窗口技巧
Windows 应用程序所要做的每项工作几乎都是基于消息处理的, Windows 系统消息分为常用 Windows 消息,控件通知消息和命令.然而,有时我们需要定义自己的消息来通知程序什么事情发生了, ...
- 【转】VC自定义消息
MFC一般可利用ClassWizard类向导添加消息和消息处理函数,但用户自定义消息必须手工输入,现将vc自定义消息方法步骤记录如下: (1)定义消息 利用#define语句直接定义用户自己的消息(既 ...
- 利用消息机制实现VC与Delphi之间的通讯(发送自定义消息)
摘要: 本文介绍了使用Windows消息机制实现由不同语言编制的程序之间的相互通讯.联系,并以当前较为流行的两种语言Microsoft Visual C++ 6.0和Borland delphi 5. ...
- vc++ 不同对话框中传递信息的方法(基于自定义消息SendMessage) (转载)
转载自:http://blog.csdn.net/myj0513/article/details/6827360 背景: 新建了一个基于对话框的MFC程序,在主对话框中添加tabcontrol控件,又 ...
- SendMessage发送自定义消息及消息响应(VC版)
控件向父窗体发送自定义消息,父窗体定义处理此消息的函数 程序源代码(整个工程)下载:http://download.csdn.net/detail/qq2399431200/6274793 效果描述 ...
随机推荐
- 使用ConditionalScope进行高效的SharePoint CSOM编程
在上一篇文章中讲述了 ExceptionHandlingScope的使用后,本章主要讲述ConditionalScope的用法. ConditionalScope在设计思路和解决问题上同Excepti ...
- 浅谈压缩感知(二十九):压缩感知算法之迭代硬阈值(IHT)
主要内容: 1.IHT的算法流程 2.IHT的MATLAB实现 3.二维信号的实验与结果 4.加速的IHT算法实验与结果 一.IHT的算法流程 文献:T. Blumensath and M. Davi ...
- ruby正则匹配回车换行符
如果你使用/^.*$/这种正则是匹配不到回车换行符的. 所以应该像下面这么写: /^[\s\S]*$/
- 单独卸载vs2010帮助文档HelpView之后的独立安装教程
由于本人的HelpView经常出错,一气之下卸载之,随后发现修复无用,安装提示“必须要在vs2010安装过程中才能安装”这不是坑爹吗.. 感谢网友Jason提供的方法,更简单. 安装程序选择(或控制面 ...
- android: 播放音频
在 Android 中播放音频文件一般都是使用 MediaPlayer 类来实现的,它对多种格式的音 频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单.下表列出了 MediaPlay ...
- Activiti 删除流程定义
package com.mycom.processDefinition; import java.io.InputStream; import java.util.List; import java. ...
- table表格宽带研究(附带:table表格为什么设置td宽度无效)
情况1:下面代码定义了表格宽带为为600px,未设置td宽带,3个td内容为1,2,3,可以看到3个内容平分table的宽度. 也就是每个td都是200px(请注意:如果用chrome调试宽度,会有一 ...
- 【VerySky原创】 ME9F
[VerySky原创] V_EKKONA - Generierte Tabelle zu einem View V_EKKONA-PFLD4 字段 SE71查看 至于图片:在表STXBITMAPS中 ...
- git的几十个基本面
1.下载git?git-scm.com 2.获取帮助git helpgit help config 3.什么是Git?版本控制系统,Version Control System, VCS.它允许我们提 ...
- swift入门篇-函数
今天给大家介绍 swift函数,swift函数和c#,js的写法大致一直,但是与object-c写法有很大不同点.废话不多说,直接开始了. 1:函数 --常量参数 func 函数名( 参数变量:类型 ...