我有一个带有列表框的窗口,我想右键单击列表框中的一个条目,并在上下文菜单中显示某些选项。我在网上搜索过,但似乎只能找到MFC C ++或仅仅是C#的示例。
在标准Win32 C ++中是否可行?我可以通过WM_CONTEXTMENU消息处理列表框上的右键单击事件,但如何使菜单出现呢?
得益于Bhargav Bhat在相关问题中的评论,我已经解决了这个问题。
通过检查WndProc中的WM_CONTEXTMENU事件来处理列表框上的右键单击。
通过wParam参数获取窗口句柄,将其与列表框进行比较,以确定用户是否在列表框上进行了右键单击。
然后,使用CreatePopupMenu()创建弹出菜单。
使用InsertMenu()/AppendMenu()向菜单中插入/追加选项。
最后,调用TrackPopupMenu()函数。
case WM_CONTEXTMENU:
if ((HWND)wParam == m_hListBox) {
m_hMenu = CreatePopupMenu();
InsertMenu(m_hMenu, 0, MF_BYCOMMAND | MF_STRING | MF_ENABLED, 1, "Hello");
TrackPopupMenu(m_hMenu, TPM_TOPALIGN | TPM_LEFTALIGN, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), 0, m_hWnd, NULL);
}
TrackPopupMenu
是可能的吗? - Bhargav