在網上找了很久都沒有找到如何在程序的運行過程中根據用戶的操作加載不同菜單的方法。
經過長時間的償試,終于讓我給找到了一種實現方式:
使用自定義消息!
在自定義消息的響應函數中實現加載并直接顯示菜單。
自定義消息的使用方式如下:
第一步:定義一個消息常量,格式如下:(在頭文件中)
#define WM_MY_MESSAGE (WM_USER+123) //123這個常數可以用大于0的任何數替代
第二步:聲明消息處理函數:(在頭文件中)
// Generated message map functions
//{{AFX_MSG(CChatDlg)
//}}AFX_MSG
afx_msg void OnMyMessage(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()
第三步:設置消息映射路徑(也許這樣說不是很恰當):(在源文件中)
BEGIN_MESSAGE_MAP(CChatDlg, CDialog)
//{{AFX_MSG_MAP(CChatDlg)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
END_MESSAGE_MAP()
第四步:定義處理自定義消息的函數:(當然也是在源文件中)
void CXXX::OnMyMessage(WPARAM wParam,LPARAM lParam)
{
...................
}第五步:也是最后一步——使用自定義消息
PostMessage(), SendMessage()等函數都可以用來發送消息。
順便說一下:如果使用消息和定義的消息不在同一個類中,這時就要將消息的定義(也就是第一步的聲明)加到你使用的那個地方,以便編譯器能夠識別。