SendMessage的基本结构如下:
| 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
						 | SendMessage(HWNDhWnd, //消息传递的目标窗口或线程的句柄。UINTMsg, //消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,)WPARAMwParam, //参数1 (WPARAM 其实是与UINT是同种类型的,//在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。 LPARAMlParam); //参数2 | 
	其中一些参数的由来如下:
	//typedef unsigned int UINT;
	//typedef UINT WPARAM;
	//typedef LONG LPARAM;
	//typedef LONG LRESULT;
	例如可以用以下语句:
| 
								1
						 | ::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0); | 
	这里我发送的消息是本窗体接收的,所以句柄用:this->m_hWnd
	这里的消息类别WM_MY_DOSOME就是我自定义的,
	在接收消息的窗体或线程所在的头文件里:
| 
								1
						 | #define WM_MY_DOSOME WM_USER+1 // do something | 
当然你还可以定义更多如:
| 
								1
						 | #define WM_DOOTHER WM_USER+2 // do other | 
	表示要做一些事情。
	到这里,可能大家还是对消息类别有点模糊,不要担心,我下面很快就讲到。
	我们发了一个消息出去,那么接收方要能识别这个消息是干什么,就是通过消息类别来区分,
	并且开始去做这个消息对应要处理的事情。如下:
一:编写一个事情:
我们在接收窗体里定义一个这样的事情(过程),
| 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
						 | afx_msg LRESULTDoSomeThing(WPARAMiParam1,LPARAMiParam2){MessageBox("收到消息了,我要开始做一些事情了。","收到",MB_OK);//可以运用iParam1,iParam2 来做一些事情。return0;} | 
	这个事情有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;
二:让接收方知道什么时候做这个事情:
我们在
| 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
						 | //{{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中显示出来
以上所述就是本文的全部内容了,希望大家能够喜欢。
相关文章
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
- 
            2025-05-25 67
- 
            2025-05-27 18
- 
            2025-05-26 66
- 
            2025-05-25 32
- 
            2025-05-25 52
 
        
 
    		 
            	 
															 
         
         
        
 
                         
                        