新建的是单文档工程(windows mobile工程)
在视图中界面上触发一个消息弹出一个菜单来,代码如下:
CMenu menu;
menu.CreatePopupMenu();
CPoint point;
GetCursorPos(&point);
menu.AppendMenu(MF_STRING,MENU_TEST1,_T("TEST1"));
menu.AppendMenu(MF_STRING,MENU_TEST2,_T("TEST2"));
menu.AppendMenu(MF_STRING,MENU_TEST3,_T("TEST3"));
CWnd* pParentWnd = this->GetParent();
menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN ,
point.x,
point.y, pParentWnd);
MENU_TEST1,MENU_TEST2,MENU_TEST3,是我定义的菜单各项的ID,
接下来就是菜单项的响应了:
IMPLEMENT_DYNCREATE(CTestListBoxView, CView)
BEGIN_MESSAGE_MAP(CTestListBoxView, CView)
// ON_MESSAGE(MENU_TEST1,OnTest1)
//ON_LBN_SELCHANGE(1, &CTestListBoxView::OnLbnSelchangeList1)
ON_WM_CLOSE()
ON_COMMAND(MENU_TEST1,&CTestListBoxView::OnTest1)
END_MESSAGE_MAP()
红色的部分(只写了一个菜单项的响应接口),
void CTestListBoxView::OnTest1()
{
........
}
头文件中声明:
afx_msg void OnTest1();
另一种方法(若菜单项比较多的话),
当鼠标单击此菜单的时候,系统发送一个消息,此消息优先
被OnCommand函数接收,OnCommand函数的原形为:
BOOL OnCommand(WPARAM wParam, LPARAM lParam);
假如你指定菜单的ID为10001,响应函数的具体写法为:
BOOL CTestListBoxView::OnCommand(WPARAM wParam, LPARAM lParam)
{
int menuID = LOWORD(wParam);
if(menuID == 10001)
{
//添加你自己的处理代码
}
}
文章出处:DIY部落(http://www.diybl.com/course/3_program/vc/vc_js/200843/108308.html)