威纳皮 捕获鼠标右键单击
WINAPI Capturing right mouse click
我在捕获鼠标点击时遇到问题。我必须案例:
- WM_NCHITTEST那个拖放窗口(捕获点击并按住)
和
-WM_RBUTTONDOWN 这是一个右键单击的 conext 菜单
我不知道如何将这两者结合起来,以便它们都能正常工作。目前,只有 NCHITEST 有效 - 它需要所有点击。从不输入 RBUTTONDOWN。有什么帮助吗?
case WM_NCHITTEST:
{ //Function used from MSDN
POINT p = { LOWORD(lParam), HIWORD(lParam) };
::ScreenToClient(hWnd, &p);
RECT r;
GetClientRect(hWnd, &r);
return PtInRect(&r, p) ? HTCAPTION : DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_RBUTTONDOWN:
KillTimer(ball, ID_TIMER);
p.x = LOWORD(lParam);
p.y = HIWORD(lParam);
hPopupMenu = CreatePopupMenu();
ClientToScreen(hWnd, &p);
AppendMenuW(hPopupMenu, MF_STRING, IDM_EXIT, L"EXIT");
InsertMenu(hPopupMenu, 0, MF_BYPOSITION | MF_STRING, IDM_EXIT, TEXT("Color Picker"));
SetForegroundWindow(hWnd);
TrackPopupMenu(hPopupMenu, TPM_RIGHTBUTTON | TPM_BOTTOMALIGN | TPM_LEFTALIGN, p.x, p.y, 0, hWnd, NULL);
DestroyMenu(hPopupMenu);
SetTimer(ball, ID_TIMER, 1, NULL);
break;
也许你可以处理WM_NCRBUTTONDOWN
:
case WM_NCRBUTTONDOWN: {
if(wParam==HTCAPTION) {
TrackPopupMenu(hMenu,TPM_LEFTALIGN|TPM_RIGHTBUTTON,GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam),0,hWnd,NULL);
}
break;
}
相关文章:
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 我想制作设置鼠标回调函数,以便在仍然按下鼠标左键时连续传递坐标
- Qt - 右键单击时编辑按钮文本
- 如何处理鼠标右键单击qsystemtrayicon
- 当右键单击时,来自Menubar的Popupmenu
- 如何在列表控件中创建右键单击菜单
- QT:检测 QGraphicsItem 上的鼠标左键和右键按下事件
- Qt:鼠标右键单击QDockWidget标题
- 循环重复的 do 语句与鼠标左键变量单击并按住
- 电子内部或外部方法创建自己的右键单击上下文菜单 - Windows
- 当鼠标右键单击(C /C#)时,如何获得快捷方式显示名称
- 如何在打开的cv c ++中单击鼠标右键时从视频中捕获图像
- 威纳皮 捕获鼠标右键单击
- 如何检测鼠标右键点击按钮
- 有没有一种方法可以模拟从鼠标右键菜单发送到控制台的调用
- 在QTableView中使用鼠标右键进行选择
- 是否可以在 MFC 按钮控件上检测到鼠标右键单击事件
- 我想知道QAction是用鼠标左键还是右键点击的
- 鼠标按钮模拟-右键和上下文菜单问题
- 如何用c++用鼠标右键移动窗口