您好,欢迎来到九壹网。
搜索
您的当前位置:首页C++vc中怎么使用SendMessage自定义消息函数

C++vc中怎么使用SendMessage自定义消息函数

来源:九壹网
C++vc中怎么使⽤SendMessage⾃定义消息函数

vc中怎么使⽤SendMessage⾃定义消息函数:

SendMessage的基本结构如下:SendMessage(

HWND hWnd, //消息传递的⽬标窗⼝或线程的句柄。

UINT Msg, //消息类别(这⾥可以是⼀些系统消息,也可以是⾃⼰定义,下⽂具体介绍,) WPARAM wParam, //参数1 (WPARAM 其实是与UINT是同种类型的, //在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。 LPARAM lParam); //参数2其中⼀些参数的由来如下://typedef unsigned int UINT;//typedef UINT WPARAM;//typedef LONG LPARAM;//typedef LONG LRESULT;例如可以⽤以下语句:

::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);这⾥我发送的消息是本窗体接收的,所以句柄⽤:this->m_hWnd这⾥的消息类别WM_MY_DOSOME就是我⾃定义的,在接收消息的窗体或线程所在的头⽂件⾥:

#define WM_MY_DOSOME WM_USER+1 // do something当然你还可以定义更多如:

#define WM_DOOTHER WM_USER+2 // do other

表⽰要做⼀些事情。

到这⾥,可能⼤家还是对消息类别有点模糊,不要担⼼,我下⾯很快就讲到。

我们发了⼀个消息出去,那么接收⽅要能识别这个消息是⼲什么,就是通过消息类别来区分,并且开始去做这个消息对应要处理的事情。如下:⼀:编写⼀个事情:

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

afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2){

MessageBox(\"收到消息了,我要开始做⼀些事情了。\收到\ //可以运⽤iParam1,iParam2 来做⼀些事情。 return 0;}

这个事情有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

到这⾥,当你⽤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); //⾃定义消息的处理函数声明

在.cpp⽂件⾥

ON_MESSAGE(WM_MYMSG, OnMyMessage)

//利⽤ON_MESSAGE()宏在⾃定义消息与其处理函数间建⽴映射关系

void CModelessDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)

//从lParam中取出CString对象的指针,并将字符串内容在IDC_MSGEDIT中显⽰出来

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务