我使用TrackPopupMenu(...)弹出菜单,响应“WM_NCRBUTTONDOWN”消息。
但当单击右键时会在鼠标的位置出现一个类似于按钮的小东西,当鼠标移动到上面时才显示菜单,而且菜单的位置也不在鼠标的位置,而是在那个小按钮右边大搞50像素的位置。
代码如下:
case WM_NCRBUTTONDOWN:
//GetCursorPos(&ptMousePos);
ptMousePos.x = LOWORD(lParam);
ptMousePos.y = HIWORD(lParam);
//ClientToScreen(hWnd, &ptMousePos);
//加上这句的位置也没显示对
hMenu = LoadMenu(g_ControlPanel.GethInstance(), MAKEINTRESOURCE(IDR_POPMENU));
TrackPopupMenu(hMenu,TPM_RIGHTBUTTON,ptMousePos.x,ptMousePos.y,NULL,hWnd,&rcWindow);
return 0; 请问怎样才能让菜单正确显示:鼠标右键单击时菜单显示在鼠标的位置,不出现那个按钮一样的东西
但当单击右键时会在鼠标的位置出现一个类似于按钮的小东西,当鼠标移动到上面时才显示菜单,而且菜单的位置也不在鼠标的位置,而是在那个小按钮右边大搞50像素的位置。
代码如下:
case WM_NCRBUTTONDOWN:
//GetCursorPos(&ptMousePos);
ptMousePos.x = LOWORD(lParam);
ptMousePos.y = HIWORD(lParam);
//ClientToScreen(hWnd, &ptMousePos);
//加上这句的位置也没显示对
hMenu = LoadMenu(g_ControlPanel.GethInstance(), MAKEINTRESOURCE(IDR_POPMENU));
TrackPopupMenu(hMenu,TPM_RIGHTBUTTON,ptMousePos.x,ptMousePos.y,NULL,hWnd,&rcWindow);
return 0; 请问怎样才能让菜单正确显示:鼠标右键单击时菜单显示在鼠标的位置,不出现那个按钮一样的东西
解决方案 »
- 函数指针问题
- 请教,关于线程问题,请高手帮忙
- 怎样在树形控件的TVN_BEGINLABELEDIT消息中更改标签?
- *** 为什么InternetConnection函数一个小时后才返回? ***
- 时间控件无法修改背景及字体颜色
- 《com原理与应用》问题?
- 自定义TabCtrl控件CCoolTabCtrl,如何响应选项卡切换事件?
- 多线程分别调试 全局变量的问题 在线等
- vs2005生成.exe 但无法启动调试 请教各位大大什么原因
- 过来人给个提示!!通过msce真的是拓展钱途的好方法吗?有必要去上那些教你通过的课吗?
- 全局变量的释放
- 在combobox菜单中选中一项,在combobox下面的方向有一个edit控件,点击combobox旁边的确认button,
HMENU hsMenu = GetSubMenu(hMenu, 0);
TrackPopupMenu(hsMenu,TPM_RIGHTBUTTON,ptMousePos.x,ptMousePos.y,NULL,hWnd,&rcWindow);
TrackPopupMenu(hMenu,TPM_LEFTALIGN |TPM_LEFTBUTTON,ptMousePos.x,ptMousePos.y,NULL,hWnd,&rcWindow);
HMENU hsMenu = GetSubMenu(hMenu, 0);
TrackPopupMenu(hsMenu,TPM_LEFTALIGN | TPM_RIGHTBUTTON,ptMousePos.x,ptMousePos.y,NULL,hWnd,&rcWindow);
VERIFY(menu.LoadMenu(CG_IDR_POPUP_MY_**));
CMenu* pPopup=menu.GetSubMenu(0);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,piont.x,point.y,this);
GetWindowRect(&rect);
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *ptrMenu;
ptrMenu = menu.GetSubMenu(0);
ptrMenu->TrackPopupMenu
(
TPM_LEFTALIGN|TPM_RIGHTBUTTON,
point.x + rect.left,
point.y + rect.top,
this
); 前面已经是很具体,也可以试试这个
GetWindowRect(&rect);
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *ptrMenu;
ptrMenu = menu.GetSubMenu(0);
ptrMenu->TrackPopupMenu
(
TPM_LEFTALIGN|TPM_RIGHTBUTTON,
point.x + rect.left,
point.y + rect.top,
this
); 前面已经是很具体,也可以试试这个
GetWindowRect(&rect);
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *ptrMenu;
ptrMenu = menu.GetSubMenu(0);
ptrMenu->TrackPopupMenu
(
TPM_LEFTALIGN|TPM_RIGHTBUTTON,
point.x + rect.left,
point.y + rect.top,
this
); 前面已经是很具体,也可以试试这个