1. 程式人生 > >VC++之自定義訊息

VC++之自定義訊息

使用者可以自定義訊息,在應用程式中主動發出,這種訊息一般用於應用程式的某一部分內部處理。

 

例項說明:

當用戶按鍵盤上的游標上移鍵時,程式傳送使用者自定義訊息,在對應的訊息響應函式中彈出訊息對話方塊,顯示訊息傳送成功。

 

操作步驟:

(1)建立一個單文件應用程式,名為:自定義訊息處理。

 

(2)定義使用者訊息ID(識別符號)值,在檢視類的標頭檔案CMyView.h中的前面寫如下語句,定義使用者訊息的識別符號:

#endif  //_MSC_VER > 1000

#define WM_MYMESSAGE    (WM_USER + 1)

class CMyView : public CView

{

   …
     }

 

(3)宣告並自定義使用者訊息響應函式:

單擊專案工作區ClassView,展開“自定義訊息處理files”,右鍵單擊CMyView,在彈出的快捷選單中單擊Add Member Function,在彈出的對話方塊中的Function Type(函式型別)處寫:void,在Function Declaration(函式宣告)處寫:OnMyFunction(),這時就將該訊息響應函式加到CMyView.cpp中了,並新增程式碼:

void CMyView::OnMyFunction()

{

      MessageBox(“恭喜你,訊息傳送成功!”);
     }

 

(4)在檢視類的實現檔案CMyView.cpp中的訊息入口處新增訊息對映:

BEGIN_MESSAGE_MAP(CMyView, CView)

//{{AFX_MSG_MAP(CMyView)

ON_MESSAGE(WM_MYMESSAGE, OnMyFunction)

//}}AFX_MSG_MAP

 

(5)編寫程式程式碼

將WM_KEYDOWN訊息響應函式(使用者按游標上移鍵時,將產生該訊息)對映到檢視類CMyView中,並加程式碼:

void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{

      HWND hWnd = GetSafeHwnd();  //接收訊息的視窗控制代碼

      if(nChar == VK_UP)  //游標上移鍵

      {

             ::PostMessage(hWnd, WM_MYMESSAGE, 0, 0);  //將自定義訊息插入訊息佇列並返回

             return ;

      }

      CView::OnKeyDown(nChar, nRepCnt, nFlags);
     }

 

(6)編譯執行,按鍵盤上的游標上移鍵,程式傳送自定義訊息,彈出一個對話方塊,如下圖所示:

image