本文实例讲述了vc中SendMessage自定义消息函数用法,分享给大家供大家参考。具体如下:
SendMessage的基本结构如下:
其中一些参数的由来如下:
//typedef unsigned int UINT;
//typedef UINT WPARAM;
//typedef LONG LPARAM;
//typedef LONG LRESULT;
例如可以用以下语句:
这里我发送的消息是本窗体接收的,所以句柄用:this->m_hWnd
这里的消息类别WM_MY_DOSOME就是我自定义的,
在接收消息的窗体或线程所在的头文件里:
到这里,可能大家还是对消息类别有点模糊,不要担心,下面很快就讲到。
我们发了一个消息出去,那么接收方要能识别这个消息是干什么,就是通过消息类别来区分,并且开始去做这个消息对应要处理的事情。如下:
一、编写一个事情:
我们在接收窗体里定义一个这样的事情(过程),
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;
二、让接收方知道什么时候做这个事情:
我们在
这样就是一个完整的消息发送与接受过程,这里没有详细讲参数,iParam1,因为还没有用到很复杂的情况,
在头文件里:
afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); //自定义消息的处理函数声明
在.cpp文件里:
void CModelessDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
//从lParam中取出CString对象的指针,并将字符串内容在IDC_MSGEDIT中显示出来
{
CString *str;
str=(CString *)lParam;
SetDlgItemText(IDC_EDIT,*str);
}
按下按钮发送消息
希望本文所述对大家的VC程序设计有所帮助。
新闻热点
疑难解答
图片精选