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)編譯執行,按鍵盤上的游標上移鍵,程式傳送自定義訊息,彈出一個對話方塊,如下圖所示: