u 自定義消息
我們可以通過一下兩種方法來自定義一個消息:
1) 方法一
Step 1 :使用 WM_TASKBARCREATED 來確定一個沒有被 windows 本身搶占的消息值,在想添加消息文件中添加代碼:
const UINT WM_USERDEFMSG = ::RegisterWindowMessage(_T("UserDefMsg"));
|
Step 2 :定義消息的處理過程:在處理消息的類(如 Dlg 類或者 MainFrame 等)添加消息處理函數聲明:
afx_msg LRESULT OnUserDefMsg(WPARAM wParam,LPARAM lParam);
|
在實現文件中添加消息處理實現,這里給出一個實現例子:
LRESULT ×××× ::OnUserDefMsg(WPARAM wParam,LPARAM lParam)
// ××××代表處理該消息的類名
{
MessageBox(" 響應了自定義的消息, ^_^"," 自定義消息響應 ",MB_ICONQUESTION | MB_OK);
return 0;
}
|
Step 3 :添加消息處理宏,在處理該消息的類的消息宏中添加自定義消息的宏,即在 BEGIN_MESSAGE_MAP 代碼塊中添加代碼:
ON_REGISTERED_MESSAGE(WM_USERDEFMSG, OnUserDefMsg)
|
自定義消息完畢。
2) 方法二
Step 1 :定義消息值,這里不通過 RegisterWindowMessage 獲取,而是自定義方式實現,在想添加消息文件中添加代碼:
#define WM_USERDEFMSG (WM_USER + 101)
|
Microsoft 推薦自定義消息值至少為 WM_USER + 100 。
Step 2 :同方法一中實現;
Step 3 :同方法一中,但是宏名稱改為 ON_MESSAGE 。
u 發送消息
按照上面方式我們已經自定義了消息,并為該消息實現了簡單的處理過程,這里就通過發送消息獲得自定義消息的響應。在要觸發自定義消息地方添加代碼:
::SendMessage(GetSafeHwnd(),WM_USERDEFMSG,0L,0L);
|
這樣你就觸發了該自定義消息,并將得到提示對話框顯示。