如何在ListBox的右键单击上创建一个上下文菜单?

3

我有一个带有列表框的窗口,我想右键单击列表框中的一个条目,并在上下文菜单中显示某些选项。我在网上搜索过,但似乎只能找到MFC C ++或仅仅是C#的示例。

在标准Win32 C ++中是否可行?我可以通过WM_CONTEXTMENU消息处理列表框上的右键单击事件,但如何使菜单出现呢?


也许与这个问题有关?另外,在这种情况下使用TrackPopupMenu是可能的吗? - Bhargav
1个回答

7

得益于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); 
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接