vc中使用SendMessage自定義消息函數(shù)
SendMessage的基本結(jié)構(gòu)如下:
SendMessage( HWND hWnd, //消息傳遞的目標(biāo)窗口或線程的句柄。 UINT Msg, //消息類別(這里可以是一些系統(tǒng)消息,也可以是自己定義,下文具體介紹,) WPARAM wParam, //參數(shù)1 (WPARAM 其實(shí)是與UINT是同種類型的, //在vc編譯器中右鍵有個(gè)“轉(zhuǎn)到WPARAM的定義”的選項(xiàng)可以查看。 LPARAM lParam); //參數(shù)2
其中一些參數(shù)的由來(lái)如下:
//typedef unsigned int UINT;
//typedef UINT WPARAM;
//typedef LONG LPARAM;
//typedef LONG LRESULT;
例如可以用以下語(yǔ)句:
::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);
這里我發(fā)送的消息是本窗體接收的,所以句柄用:this->m_hWnd
這里的消息類別WM_MY_DOSOME就是我自定義的,
在接收消息的窗體或線程所在的頭文件里:
#define WM_MY_DOSOME WM_USER+1 // do something
當(dāng)然你還可以定義更多如:
#define WM_DOOTHER WM_USER+2 // do other
表示要做一些事情。
到這里,可能大家還是對(duì)消息類別有點(diǎn)模糊,不要擔(dān)心,我下面很快就講到。
我們發(fā)了一個(gè)消息出去,那么接收方要能識(shí)別這個(gè)消息是干什么,就是通過(guò)消息類別來(lái)區(qū)分,
并且開(kāi)始去做這個(gè)消息對(duì)應(yīng)要處理的事情。如下:
一:編寫(xiě)一個(gè)事情:
我們?cè)诮邮沾绑w里定義一個(gè)這樣的事情(過(guò)程),
afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2) { MessageBox("收到消息了,我要開(kāi)始做一些事情了。","收到",MB_OK); //可以運(yùn)用iParam1,iParam2 來(lái)做一些事情。 return 0; }
這個(gè)事情有3點(diǎn)大家要注意,非常重要:
1:使用了afx_msg,并且要將afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)
改寫(xiě)到頭文件的
//{{AFX_MSG
//。。。改寫(xiě)到這里,顏色會(huì)變成灰的。這一點(diǎn)非常重要。
//}}AFX_MSG
2:參數(shù)有2個(gè),WPARAM iParam1,LPARAM iParam2,哪怕沒(méi)有東西傳進(jìn)來(lái)也要寫(xiě),不然會(huì)吃苦頭的,vc里不會(huì)提醒你少寫(xiě)了一個(gè),
但一些莫名奇妙的事情會(huì)發(fā)生。
3:類型用 LRESULT,完了要return 0;
二:讓接收方知道什么時(shí)候做這個(gè)事情:
我們?cè)?br />
//{{AFX_MSG_MAP //。。。這里寫(xiě)上 ON_MESSAGE(WM_MY_DOSOME,DoSomeThing) //如果還有其他消息就再寫(xiě)一個(gè) ON_MESSAGE(WM_DOOTHER,DoOther) //}}AFX_MSG_MAP
到這里,當(dāng)你用SendMessage,發(fā)了一個(gè)WM_MY_DOSOME類型的消息過(guò)來(lái)的時(shí)候,
接收方就會(huì)去做DoSomeThing(WPARAM iParam1,LPARAM iParam2)
發(fā)了一個(gè)WM_DOOTHER類型的消息過(guò)來(lái)的時(shí)候,
接收方就會(huì)去做DoOther(WPARAM iParam1,LPARAM iParam2)當(dāng)然,這里DoOther我還沒(méi)有定義,
這樣就是一個(gè)完整的消息發(fā)送與接受過(guò)程,我沒(méi)有詳細(xì)講參數(shù),iParam1,因?yàn)檫€沒(méi)有用到很復(fù)雜的情況,
大家要是有心得我們可以一起提高。
在頭文件里
#define WM_MYMSG WM_USER+5 //自定義一個(gè)消息
afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); //自定義消息的處理函數(shù)聲明
在.cpp文件里
ON_MESSAGE(WM_MYMSG, OnMyMessage)
//利用ON_MESSAGE()宏在自定義消息與其處理函數(shù)間建立映射關(guān)系
void CModelessDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
//從lParam中取出CString對(duì)象的指針,并將字符串內(nèi)容在IDC_MSGEDIT中顯示出來(lái)
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
上一篇:Vc++ 控件List Control用法總結(jié)
欄 目:C語(yǔ)言
下一篇:C++讀寫(xiě)INI配置文件的類實(shí)例
本文標(biāo)題:vc中使用SendMessage自定義消息函數(shù)
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3044.html
您可能感興趣的文章
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)數(shù)怎么表達(dá)
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎么打出三角函數(shù)的值
- 01-10使用OpenGL實(shí)現(xiàn)3D立體顯示的程序代碼
- 01-10深入理解C++中常見(jiàn)的關(guān)鍵字含義
- 01-10使用C++實(shí)現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10APUE筆記之:進(jìn)程環(huán)境詳解
- 01-10c++中inline的用法分析


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫(xiě)分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫(xiě)函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什