Szh Szh Sonno search Surtei Surtei Depravedteen Depravedteen Depravedteen C Szh 0search8开发PDA应用程序的过程中,在对话框类中加入上面方法却不能改变菜单项的状态,原因是当菜单被点击的过程时候会发出WM_INITMENUPOPUP消息,如果程序没有代码响应该消息则MFC默认程序再响应该消息的时候会将菜单项的状态恢复原状,因此若要使上述代码有效,则必须相应该消息。用过VC6.0的朋友都会下意识的找UPDATE_COMMAND_UI事件,可是VC++2008下没有提供该通用事件,因此只能靠响应WM_INITMENUPOPUP消息来实现了。传统对话框程序可以很容易的在属性——事件列表中找到WM_INITMENUPOPUP事件,而如果程序为SDI应用程序则必须要在CMainFrame类中手动创建该消息的响应函数。创建步骤如下:
首先在MainFrame.cpp中添加消息影射标志,代码如下:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_INITMENUPOPUP() //响应WM_INITMENUPOPUP事件
END_MESSAGE_MAP()
其次在MainFrame.h中添加消息相应成员函数,代码如下:
prvate:
afx_msg void OnInitMenuPopup(CMenu *pMenu,UINT nStyle,BOOL bSysMenu);
最后,在MainFrame.cpp中添加该函数的实现,代码如下:
void CMainFrame::OnInitMenuPopup(CMenu *pMenu,UINT nStyle,BOOL bSysMenu)
{}
}
运行程序后,菜单项状态将会被显示
QQ:819543772