【问题标题】:How to create a context menu on listbox right click?如何在列表框右键单击上创建上下文菜单?
【发布时间】:2012-12-09 16:45:38
【问题描述】:

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

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

【问题讨论】:

  • 可能与this 问题有关?在这种情况下也不可能使用TrackPopupMenu 吗?

标签: c++ winapi


【解决方案1】:

感谢 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); 
        }

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 2010-10-20
    • 2013-02-11
    • 2019-09-13
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多