vc中怎麼使用SendMessage自定義訊息函式

2021-05-24 23:12:11 字數 2082 閱讀 7491

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_user+1 // do something

當然你還可以定義更多如:

#define wm_doother wm_user+2 // do other

表示要做一些事情。

到這裡,可能大家還是對訊息類別有點模糊,不要擔心,我下面很快就講到。

我們發了乙個訊息出去,那麼接收方要能識別這個訊息是幹什麼,就是通過訊息類別來區分,

並且開始去做這個訊息對應要處理的事情。如下:

一:編寫乙個事情:

我們在接收窗體裡定義乙個這樣的事情(過程),

afx_msg lresult dosomething(wparam iparam1,lparam iparam2)

這個事情有3點大家要注意,非常重要:

1:使用了afx_msg,並且要將afx_msg lresult dosomething(wparam iparam1,lparam iparam2)

改寫到頭檔案的 

//}afx_msg

2:引數有2個,wparam iparam1,lparam iparam2,哪怕沒有東西傳進來也要寫,不然會吃苦頭的,vc裡不會提醒你少寫了乙個,

但一些莫名奇妙的事情會發生。

3:型別用 lresult,完了要return 0;

二:讓接收方知道什麼時候做這個事情:

我們在//}afx_msg_map

到這裡,當你用sendmessage,發了乙個wm_my_dosome型別的訊息過來的時候,

接收方就會去做dosomething(wparam iparam1,lparam iparam2)

發了乙個wm_doother型別的訊息過來的時候,

接收方就會去做doother(wparam iparam1,lparam iparam2)當然,這裡doother我還沒有定義,

這樣就是乙個完整的訊息傳送與接受過程,我沒有詳細講引數,iparam1,因為還沒有用到很複雜的情況,

大家要是有心得我們可以一起提高。

wm_mymsg  wm_user+5 

//自定義乙個訊息

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中顯示出來

按下按鈕傳送訊息

void

cmodelessdlg::onmsgbtn() 

VC中怎麼讀取 txt檔案

一 cstdiofile 二 file f fopen file name mode char buff size fread buff,size,1,f fclose f 三 用mfc讀檔案 cfile file yourfile.txt cfile moderead char pbuf int ...

VC中的tab控制項怎麼用

屬性對話方塊不同於普通對話方塊的是它能同時提供多個選項頁,而每頁都可以由資源編輯器 以編輯對話方塊的方式進行編輯,這樣給介面開發帶來了方便。同時使用上也遵守普通對話 框的規則,所以學習起來很方便。屬性對話方塊由兩部分構成 多個屬性頁 cpropertypage 和屬性對話方塊 cpropertysh...

VC中Tree Control的使用

vc中tree control的使用 邵盛松 2010年11月29日星期一 一 tree control的初始化 htreeitem htreeitemparent null htreeitem htreeitemchild null cstring strparentdata l cstring ...