vc中使用SendMessage自定义消息函数
SendMessage的基本结构如下: SendMessage( HWND hWnd,//消息传递的目标窗口或线程的句柄。 UINT Msg,//消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,) WPARAM wParam,//参数1 (WPARAM 其实是与UINT是同种类型的, //在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。 LPARAM lParam); //参数2 其中一些参数的由来如下: ::SendMessage(this->m_hWnd,WM_MY_DOSOME,(WPARAM) 0,(LPARAM) 0); 这里我发送的消息是本窗体接收的,所以句柄用:this->m_hWnd #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("收到消息了,我要开始做一些事情了。","收到",MB_OK); //可以运用iParam1,iParam2 来做一些事情。 return 0; } 这个事情有3点大家要注意,非常重要: 二:让接收方知道什么时候做这个事情: 我们在 //{{AFX_MSG_MAP //。。。这里写上 ON_MESSAGE(WM_MY_DOSOME,DoSomeThing) //如果还有其他消息就再写一个 ON_MESSAGE(WM_DOOTHER,DoOther) //}}AFX_MSG_MAP 到这里,当你用SendMessage,发了一个WM_MY_DOSOME类型的消息过来的时候, 在头文件里 复制代码 代码如下: #define WM_MYMSG WM_USER+5 //自定义一个消息 afx_msg void OnMyMessage(WPARAM wParam,LPARAM lParam); //自定义消息的处理函数声明 在.cpp文件里 void CModelessDlg::OnMyMessage(WPARAM wParam,LPARAM lParam) 以上所述就是本文的全部内容了,希望大家能够喜欢。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |