• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > vc中使用SendMessage自定义消息函数

vc中使用SendMessage自定义消息函数

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了vc sendmessage,sendmessage,sendmessage用法,sendmessage参数,c sendmessage等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

SendMessage的基本结构如下:

SendMessage(
  HWND hWnd, //消息传递的目标窗口或线程的句柄。
  UINT Msg, //消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,)
  WPARAM wParam, //参数1 (WPARAM 其实是与UINT是同种类型的,
 //在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。 
  LPARAM lParam); //参数2
</div>

其中一些参数的由来如下:
//typedef unsigned int UINT;
//typedef UINT WPARAM;
//typedef LONG LPARAM;
//typedef LONG LRESULT;
例如可以用以下语句:

::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);
</div>

这里我发送的消息是本窗体接收的,所以句柄用:this->m_hWnd
这里的消息类别WM_MY_DOSOME就是我自定义的,
在接收消息的窗体或线程所在的头文件里:

#define WM_MY_DOSOME WM_USER+1 // do something
</div>

当然你还可以定义更多如:

#define WM_DOOTHER WM_USER+2 // do other
</div>

表示要做一些事情。
到这里,可能大家还是对消息类别有点模糊,不要担心,我下面很快就讲到。
我们发了一个消息出去,那么接收方要能识别这个消息是干什么,就是通过消息类别来区分,
并且开始去做这个消息对应要处理的事情。如下:

一:编写一个事情:

我们在接收窗体里定义一个这样的事情(过程),

afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)
{
 MessageBox("收到消息了,我要开始做一些事情了。","收到",MB_OK);
 //可以运用iParam1,iParam2 来做一些事情。
 return 0;
}
</div>

这个事情有3点大家要注意,非常重要:
1:使用了afx_msg,并且要将afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)
改写到头文件的
//{{AFX_MSG
//。。。改写到这里,颜色会变成灰的。这一点非常重要。
//}}AFX_MSG
2:参数有2个,WPARAM iParam1,LPARAM iParam2,哪怕没有东西传进来也要写,不然会吃苦头的,vc里不会提醒你少写了一个,
但一些莫名奇妙的事情会发生。
3:类型用 LRESULT,完了要return 0;

二:让接收方知道什么时候做这个事情:

我们在

//{{AFX_MSG_MAP
//。。。这里写上
ON_MESSAGE(WM_MY_DOSOME,DoSomeThing)
//如果还有其他消息就再写一个
ON_MESSAGE(WM_DOOTHER,DoOther)
//}}AFX_MSG_MAP
</div>

到这里,当你用SendMessage,发了一个WM_MY_DOSOME类型的消息过来的时候,
接收方就会去做DoSomeThing(WPARAM iParam1,LPARAM iParam2)
发了一个WM_DOOTHER类型的消息过来的时候,
接收方就会去做DoOther(WPARAM iParam1,LPARAM iParam2)当然,这里DoOther我还没有定义,
这样就是一个完整的消息发送与接受过程,我没有详细讲参数,iParam1,因为还没有用到很复杂的情况,
大家要是有心得我们可以一起提高。

在头文件里

#define WM_MYMSG  WM_USER+5 //自定义一个消息
afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); //自定义消息的处理函数声明
</div>

在.cpp文件里
ON_MESSAGE(WM_MYMSG, OnMyMessage)
//利用ON_MESSAGE()宏在自定义消息与其处理函数间建立映射关系

void CModelessDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
//从lParam中取出CString对象的指针,并将字符串内容在IDC_MSGEDIT中显示出来

以上所述就是本文的全部内容了,希望大家能够喜欢。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • vc中使用SendMessage自定义消息函数
  • vc中SendMessage自定义消息函数用法实例
  • VC中SendMessage和PostMessage的区别

相关文章

  • 2017-05-28通过C++程序示例理解设计模式中的外观模式
  • 2017-05-28C语言压缩文件和用MD5算法校验文件完整性的实例教程
  • 2017-05-28用C语言实现单链表的各种操作(二)
  • 2017-05-28关于win32 gettimeofday替代方案
  • 2017-05-28C++堆排序算法的实现方法
  • 2017-05-28C与C++之间相互调用实例方法讲解
  • 2017-05-28关于STL中set容器的一些总结
  • 2017-05-28C语言实现堆排序的简单实例
  • 2017-05-28Linux C 获取进程退出值的实现代码
  • 2017-05-28C++设计模式之原型模式

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 深入理解Java事务的原理与应用
    • 通俗地理解什么是编程语言
    • OnSize、OnSizing和OnGetMinMaxInfo区别分析
    • C++中“#”号的使用技巧
    • C++中sprintf()函数的使用详解
    • C++读取INI配置文件类实例详解
    • c++中虚函数的实现详解
    • C++可变参数的函数与模板实例分析
    • 剖析C++中的常量表达式与省略号的相关作用
    • C语言编写银行打印程序实例参考

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有