在网上找了很久都没有找到如何在程序的运行过程中根据用户的操作加载不同菜单的方法。
经过长时间的偿试,终于让我给找到了一种实现方式:
使用自定义消息!
在自定义消息的响应函数中实现加载并直接显示菜单。
自定义消息的使用方式如下:
第一步:定义一个消息常量,格式如下:(在头文件中)
#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()等函数都可以用来发送消息。
顺便说一下:如果使用消息和定义的消息不在同一个类中,这时就要将消息的定义(也就是第一步的声明)加到你使用的那个地方,以便编译器能够识别。