欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2014年10月22日 12:04:29   投稿:shichen2014  
這篇文章主要介紹了vc中SendMessage自定義消息函數(shù)用法,以實(shí)例實(shí)行詳細(xì)講述了SendMessage的定義、原理與用法,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下

本文實(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ù)的由來(lái)如下:

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

例如可以用以下語(yǔ)句:

復(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è)消息是干什么,就是通過(guò)消息類別來(lái)區(qū)分,并且開(kāi)始去做這個(gè)消息對(duì)應(yīng)要處理的事情。如下:

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

復(fù)制代碼 代碼如下:
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)
改寫到頭文件的
//{{AFX_MSG
//。。。改寫到這里,顏色會(huì)變成灰的。這一點(diǎn)非常重要。
//}}AFX_MSG
2. 參數(shù)有2個(gè),WPARAM iParam1,LPARAM iParam2,哪怕沒(méi)有東西傳進(jìn)來(lái)也要寫,不然會(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類型的消息過(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ù)雜的情況,

在頭文件里:

復(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中顯示出來(lái)
{

    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ì)有所幫助。

相關(guān)文章

  • C語(yǔ)言模擬實(shí)現(xiàn)C++的繼承與多態(tài)示例

    C語(yǔ)言模擬實(shí)現(xiàn)C++的繼承與多態(tài)示例

    本篇文章主要介紹了C語(yǔ)言模擬實(shí)現(xiàn)C++的繼承與多態(tài)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 更優(yōu)雅的C++字符串格式化實(shí)現(xiàn)方法詳解

    更優(yōu)雅的C++字符串格式化實(shí)現(xiàn)方法詳解

    在用C++編寫代碼時(shí),經(jīng)常需要用到字符串拼接及格式化,尤其是在拼寫sql語(yǔ)句時(shí)。所以本文為大家介紹了更優(yōu)雅的C++字符串格式化實(shí)現(xiàn)方法,希望對(duì)大家有所幫助
    2023-04-04
  • C語(yǔ)言深入探究自定義類型之結(jié)構(gòu)體與枚舉及聯(lián)合

    C語(yǔ)言深入探究自定義類型之結(jié)構(gòu)體與枚舉及聯(lián)合

    今天我們來(lái)學(xué)習(xí)一下自定義類型,自定義類型包括結(jié)構(gòu)體、枚舉、聯(lián)合體,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考
    2022-05-05
  • 詳解C++中菱形繼承的原理與解決方法

    詳解C++中菱形繼承的原理與解決方法

    C++中的菱形繼承是多繼承的一種特殊情況,本文將通過(guò)海里帶大家了解一下菱形繼承形成的原因以及想應(yīng)的解決方法,感興趣的可以了解一下
    2023-02-02
  • C++ 整型與字符串的互轉(zhuǎn)方式

    C++ 整型與字符串的互轉(zhuǎn)方式

    今天小編就為大家分享一篇C++ 整型與字符串的互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • C++實(shí)現(xiàn)簡(jiǎn)單推箱子小游戲

    C++實(shí)現(xiàn)簡(jiǎn)單推箱子小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單推箱子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語(yǔ)言中用于修改文件的存取時(shí)間的函數(shù)使用

    C語(yǔ)言中用于修改文件的存取時(shí)間的函數(shù)使用

    這篇文章主要介紹了C語(yǔ)言中用于修改文件的存取時(shí)間的函數(shù)使用,分別為utime()函數(shù)和utimes()函數(shù)的使用,需要的朋友可以參考下
    2015-09-09
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的<三子棋>案例

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的<三子棋>案例

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的《三子棋》,本文通過(guò)功能區(qū)分一步步實(shí)現(xiàn)該案例,通過(guò)逐步的解析和代碼列舉,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • c++實(shí)現(xiàn)超簡(jiǎn)單的貪吃蛇游戲?qū)嵗榻B

    c++實(shí)現(xiàn)超簡(jiǎn)單的貪吃蛇游戲?qū)嵗榻B

    大家好,本篇文章主要講的是c++實(shí)現(xiàn)超簡(jiǎn)單的貪吃蛇游戲?qū)嵗榻B,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++異常使用詳解(看這一篇就夠了)

    C++異常使用詳解(看這一篇就夠了)

    C++中的異常是指在程序執(zhí)行過(guò)程中發(fā)生錯(cuò)誤,導(dǎo)致程序無(wú)法正常運(yùn)行的情況,下面這篇文章主要給大家介紹了關(guān)于C++異常使用的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10

最新評(píng)論