下面是用ATL编写的鼠标在控件上点击右键时弹出上下文菜单的代码(没问题). HMENU m_hMenu;//上下文菜单句柄
LRESULT OnRButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
//LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)这也行吧
{
// TODO : Add Code for message handler. Call DefWindowProc if necessary.
if(m_hMenu==NULL) //上下文菜单句柄
{
HMENU hMenu =
LoadMenu(_Module.GetResourceInstance(),MAKEINTRESOURCE(IDR_POPMENU));
m_hMenu = GetSubMenu(hMenu,0);
}
POINT hp;
hp.x = LOWORD(lParam);
hp.y = HIWORD(lParam);
ClientToScreen(&hp);
TrackPopupMenu(m_hMenu,TPM_LEFTALIGN |TPM_RIGHTBUTTON,hp.x,hp.y,0,this->m_hWnd,NULL);
return 0;
}注释:IDR_POPMENU也在菜单资源中定义了.
点击右键,弹出上下文菜单没问题.
问题是:如何编写上下文菜单中各子菜单项的响应代码?
LRESULT OnRButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
//LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)这也行吧
{
// TODO : Add Code for message handler. Call DefWindowProc if necessary.
if(m_hMenu==NULL) //上下文菜单句柄
{
HMENU hMenu =
LoadMenu(_Module.GetResourceInstance(),MAKEINTRESOURCE(IDR_POPMENU));
m_hMenu = GetSubMenu(hMenu,0);
}
POINT hp;
hp.x = LOWORD(lParam);
hp.y = HIWORD(lParam);
ClientToScreen(&hp);
TrackPopupMenu(m_hMenu,TPM_LEFTALIGN |TPM_RIGHTBUTTON,hp.x,hp.y,0,this->m_hWnd,NULL);
return 0;
}注释:IDR_POPMENU也在菜单资源中定义了.
点击右键,弹出上下文菜单没问题.
问题是:如何编写上下文菜单中各子菜单项的响应代码?
解决方案 »
- propertypage里放了一个tabcontrol,怎样使tabcontrol页面获得焦点。
- 求人高手帮忙,给Keil C编译器增加一个功能菜单项
- 奇怪的socket错误,急救!
- CHtmlView打开一个链接,如何知道打开成功了还是打开失败了?100分
- 大家快来看看呀,帮我解决一下!
- 请问在哪儿更新shellapi.h .dll?急!在线等!
- 如何建立一个YUV的离屏表面?
- 急,请帮帮我
- 大家快帮忙看看啊,我就不信没人知道,解决了问题至少300分!!
- 我想考博,可是我的导师让我给他免费干活,不让我考。
- 关于进程注入问题
- 一个简单计算器的问题,分不多,但请各位高手帮一下我这个新手,很急 谢谢
映射ON_COMMAND_RANGE(700,710, OnMenuItemClick)
然后在消息处理函数OnMenuItemClick(UINT uID)中判定具体的ID进行处理