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