程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> vc中應用SendMessage自界說新聞函數

vc中應用SendMessage自界說新聞函數

編輯:關於C++

vc中應用SendMessage自界說新聞函數。本站提示廣大學習愛好者:(vc中應用SendMessage自界說新聞函數)文章只能為提供參考,不一定能成為您想要的結果。以下是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)
{
 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裡不會提示你少寫了一個,
但一些莫名奧妙的工作會產生。
3:類型用 LRESULT,完了要return 0;

二:讓吸收方曉得甚麼時刻做這個工作:

我們在

//{{AFX_MSG_MAP
//。。。這裡寫上
ON_MESSAGE(WM_MY_DOSOME,DoSomeThing)
//假如還有其他新聞就再寫一個
ON_MESSAGE(WM_DOOTHER,DoOther)
//}}AFX_MSG_MAP

到這裡,當你用SendMessage,發了一個WM_MY_DOSOME類型的新聞過去的時刻,
吸收方就會去做DoSomeThing(WPARAM iParam1,LPARAM iParam2)
發了一個WM_DOOTHER類型的新聞過去的時刻,
吸收方就會去做DoOther(WPARAM iParam1,LPARAM iParam2)固然,這裡DoOther我還沒有界說,
如許就是一個完全的新聞發送與接收進程,我沒有具體講參數,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中顯示出來

以上所述就是本文的全體內容了,願望年夜家可以或許愛好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved