欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

vc中SendMessage自定義消息函數(shù)用法實(shí)例

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

本文實(shí)例講述了vc中SendMessage自定義消息函數(shù)用法,分享給大家供大家參考。具體如下:

SendMessage的基本結(jié)構(gòu)如下:

復(fù)制代碼 代碼如下:
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ù)的由來如下:

//typedef unsigned int UINT;
//typedef UINT WPARAM;
//typedef LONG LPARAM;
//typedef LONG LRESULT;

例如可以用以下語句:

復(fù)制代碼 代碼如下:
::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);

這里我發(fā)送的消息是本窗體接收的,所以句柄用:this->m_hWnd
這里的消息類別WM_MY_DOSOME就是我自定義的,
在接收消息的窗體或線程所在的頭文件里:

復(fù)制代碼 代碼如下:
#define WM_MY_DOSOME WM_USER+1 // do something

當(dāng)然你還可以定義更多如:
復(fù)制代碼 代碼如下:
#define WM_DOOTHER WM_USER+2 // do other

表示要做一些事情。

到這里,可能大家還是對(duì)消息類別有點(diǎn)模糊,不要擔(dān)心,下面很快就講到。
我們發(fā)了一個(gè)消息出去,那么接收方要能識(shí)別這個(gè)消息是干什么,就是通過消息類別來區(qū)分,并且開始去做這個(gè)消息對(duì)應(yīng)要處理的事情。如下:

一、編寫一個(gè)事情:
我們?cè)诮邮沾绑w里定義一個(gè)這樣的事情(過程),

復(fù)制代碼 代碼如下:
afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)
{
 MessageBox("收到消息了,我要開始做一些事情了。","收到",MB_OK);
 //可以運(yùn)用iParam1,iParam2 來做一些事情。
 return 0;
}

這個(gè)事情有3點(diǎn)大家要注意,非常重要:

1. 使用了afx_msg,并且要將afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)
改寫到頭文件的
//{{AFX_MSG
//。。。改寫到這里,顏色會(huì)變成灰的。這一點(diǎn)非常重要。
//}}AFX_MSG
2. 參數(shù)有2個(gè),WPARAM iParam1,LPARAM iParam2,哪怕沒有東西傳進(jìn)來也要寫,不然會(huì)吃苦頭的,vc里不會(huì)提醒你少寫了一個(gè),
但一些莫名奇妙的事情會(huì)發(fā)生。
3. 類型用 LRESULT,完了要return 0;

二、讓接收方知道什么時(shí)候做這個(gè)事情:
我們?cè)?br />

復(fù)制代碼 代碼如下:
//{{AFX_MSG_MAP
//。。。這里寫上
ON_MESSAGE(WM_MY_DOSOME,DoSomeThing)
//如果還有其他消息就再寫一個(gè)
ON_MESSAGE(WM_DOOTHER,DoOther)
//}}AFX_MSG_MAP

到這里,當(dāng)你用SendMessage,發(fā)了一個(gè)WM_MY_DOSOME類型的消息過來的時(shí)候,接收方就會(huì)去做DoSomeThing(WPARAM iParam1,LPARAM iParam2)
發(fā)了一個(gè)WM_DOOTHER類型的消息過來的時(shí)候,接收方就會(huì)去做DoOther(WPARAM iParam1,LPARAM iParam2)當(dāng)然,這里DoOther我還沒有定義。

這樣就是一個(gè)完整的消息發(fā)送與接受過程,這里沒有詳細(xì)講參數(shù),iParam1,因?yàn)檫€沒有用到很復(fù)雜的情況,

在頭文件里:

復(fù)制代碼 代碼如下:
#define WM_MYMSG  WM_USER+5 //自定義一個(gè)消息

afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); //自定義消息的處理函數(shù)聲明

在.cpp文件里:

復(fù)制代碼 代碼如下:
ON_MESSAGE(WM_MYMSG, OnMyMessage)
//利用ON_MESSAGE()宏在自定義消息與其處理函數(shù)間建立映射關(guān)系

void CModelessDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
//從lParam中取出CString對(duì)象的指針,并將字符串內(nèi)容在IDC_MSGEDIT中顯示出來
{

    CString *str;
    str=(CString *)lParam;

    SetDlgItemText(IDC_EDIT,*str);
}

按下按鈕發(fā)送消息

復(fù)制代碼 代碼如下:
void CModelessDlg::OnMsgBTN()
{
 CString str= "自定義消息被觸發(fā)了!";
 SendMessage(WM_MYMSG, 0, (LPARAM) &str);
 //給ModelessDlg自己發(fā)一個(gè)自定義的消息
}

希望本文所述對(duì)大家的VC程序設(shè)計(jì)有所幫助。

上一篇:C++之BOOST字符串查找示例

欄    目:C語言

下一篇:VC定時(shí)器的用法實(shí)例詳解

本文標(biāo)題:vc中SendMessage自定義消息函數(shù)用法實(shí)例

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3213.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有