广东做网站公司,wordpress 后台修改,做刷题网站赚钱么,淘宝网站经营与建设论文vc中怎么使用SendMessage自定义消息函数#xff1a; SendMessage的基本结构如下#xff1a; SendMessage( HWND hWnd, //消息传递的目标窗口或线程的句柄。 UINT Msg, //消息类别#xff08;这里可以是一些系统消息#xff0c;也可以是自己定义#xff0c;下文具… 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_USER1 // do something 当然你还可以定义更多如 #define WM_DOOTHER WM_USER2 // do other 表示要做一些事情。 到这里可能大家还是对消息类别有点模糊不要担心我下面很快就讲到。 我们发了一个消息出去,那么接收方要能识别这个消息是干什么就是通过消息类别来区分 并且开始去做这个消息对应要处理的事情。如下 一编写一个事情 我们在接收窗体里定义一个这样的事情过程 afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2) { MessageBox(收到消息了我要开始做一些事情了。,收到,MB_OK); //可以运用iParam1iParam2 来做一些事情。 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_USER5 //自定义一个消息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中显示出来{ CString *str; str(CString *)lParam; SetDlgItemText(IDC_EDIT,*str);}按下按钮发送消息void CModelessDlg::OnMsgBTN() { CString str 自定义消息被触发了;SendMessage(WM_MYMSG, 0, (LPARAM) str); //给ModelessDlg自己发一个自定义的消息} 转载于:https://www.cnblogs.com/wqj1212/archive/2008/03/03/1089298.html