日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

java sendmessage函数_vc中SendMessage自定义消息函数用法实例

發(fā)布時間:2023/12/3 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java sendmessage函数_vc中SendMessage自定义消息函数用法实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

SendMessage的基本結構如下:

SendMessage(

HWND hWnd,? //消息傳遞的目標窗口或線程的句柄。

UINT Msg, //消息類別(這里可以是一些系統(tǒng)消息,也可以是自己定義,下文具體介紹,)

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);

這里我發(fā)送的消息是本窗體接收的,所以句柄用:this->m_hWnd

這里的消息類別WM_MY_DOSOME就是我自定義的,

在接收消息的窗體或線程所在的頭文件里:

#define WM_MY_DOSOME WM_USER+1 // do something

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

#define WM_DOOTHER WM_USER+2 // do other

表示要做一些事情。

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

我們發(fā)了一個消息出去,那么接收方要能識別這個消息是干什么,就是通過消息類別來區(qū)分,并且開始去做這個消息對應要處理的事情。如下:

一、編寫一個事情:我們在接收窗體里定義一個這樣的事情(過程),

afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)

{

MessageBox("收到消息了,我要開始做一些事情了。","收到",MB_OK);

//可以運用iParam1,iParam2 來做一些事情。

return 0;

}

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

1. 使用了afx_msg,并且要將afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)

改寫到頭文件的

//{{AFX_MSG

//。。。改寫到這里,顏色會變成灰的。這一點非常重要。

//}}AFX_MSG

2. 參數有2個,WPARAM iParam1,LPARAM iParam2,哪怕沒有東西傳進來也要寫,不然會吃苦頭的,vc里不會提醒你少寫了一個,

但一些莫名奇妙的事情會發(fā)生。

3. 類型用 LRESULT,完了要return 0;

二、讓接收方知道什么時候做這個事情:我們在

//{{AFX_MSG_MAP

//。。。這里寫上

ON_MESSAGE(WM_MY_DOSOME,DoSomeThing)

//如果還有其他消息就再寫一個

ON_MESSAGE(WM_DOOTHER,DoOther)

//}}AFX_MSG_MAP

到這里,當你用SendMessage,發(fā)了一個WM_MY_DOSOME類型的消息過來的時候,接收方就會去做DoSomeThing(WPARAM iParam1,LPARAM iParam2)

發(fā)了一個WM_DOOTHER類型的消息過來的時候,接收方就會去做DoOther(WPARAM iParam1,LPARAM iParam2)當然,這里DoOther我還沒有定義。

這樣就是一個完整的消息發(fā)送與接受過程,這里沒有詳細講參數,iParam1,因為還沒有用到很復雜的情況,

在頭文件里:

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

{

CString *str;

str=(CString *)lParam;

SetDlgItemText(IDC_EDIT,*str);

}

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

void CModelessDlg::OnMsgBTN()

{

CString str= "自定義消息被觸發(fā)了!";

SendMessage(WM_MYMSG, 0, (LPARAM) &str);

//給ModelessDlg自己發(fā)一個自定義的消息

}

希望本文所述對大家的VC程序設計有所幫助。

總結

以上是生活随笔為你收集整理的java sendmessage函数_vc中SendMessage自定义消息函数用法实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。