昨天在研究window mobile菜单编程的时候遇到了菜单路由方法的问题。其实这个问题在去年就已经遇到过了,而且得到了解决但是一直以来都没有去认真的总结一下。
window消息分三种类型:标准形式(WM_COMMAND)、命令形式(一般与ID_开头)、通告消息形式(一般是事件触发进行、处理方法一般是一个函数)。
菜单命令路由方式是标准的消息处理形式。具体路由步骤如下
(1)在视类的源程序中有两处信息,在两个AFX_MSG注释宏之间添加命令消息相应函数原型。
protected:
//{{AFX_MSG(CMenuView)
afx_msg void OnTest();-----添加的消息相应函数原型
//}}AFX_MSG
(2)在视类的源文件中有两处信息,一处是在两个AFX_MSG_MAP注释宏之间添加了ON_COMMAND宏,将菜单ID与命令相应函数关联起来。
BEGIN_MESSAGE_MAP(Cmenuview cview)
ON_WM_CNTEXTMENU();
//{{AFX_MSG_MAP(CMENUVIEW)
ON_COMMAND(IDM_TEST,OnTest);
//}}AFX_MSG_MAP
(3)添加函数原型和具体代码
void CMenuView::OnTest()
{
//TODO:Add your command handler code here
MessageBox(LPSTR("Hello world!"));
}