如何在列表框右键单击上创建上下文菜单?

编程入门 行业动态 更新时间:2024-10-24 18:23:53
本文介绍了如何在列表框右键单击上创建上下文菜单?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时送ChatGPT账号..

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

I have a window with a listbox which I would like to right click an entry in the list box and have certain options displayed in a context menu. I've looked online but it seems as if I can only get examples in MFC C++, or simply c#.

这在标准的 Win32 C++ 中是可能的吗?我可以通过 WM_CONTEXTMENU 消息处理对列表框的右键单击,但是如何显示菜单?

Is this possible in standard Win32 c++? I can handle a right click on the listbox via the WM_CONTEXTMENU message, but how can I make a menu appear?

推荐答案

我想通了,感谢 Bhargav Bhat 对相关问题的评论.

I figured it out, thanks to Bhargav Bhat's comment about the related question.

通过检查 WndProc 中的 WM_CONTEXTMENU 处理列表框的右键单击.

Handle right click on the listbox via checking for WM_CONTEXTMENU in your WndProc.

通过 wParam 参数获取窗口句柄,将其与您的列表框进行比较,以查看用户是否右键单击了列表框.

Grab the handle to the window via the wParam parameter, compare it to your listbox to see if the user right clicked the listbox.

从那里,通过 CreatePopupMenu() 创建弹出菜单.

From there, create the popupmenu via CreatePopupMenu().

通过 InsertMenu()/AppendMenu() 在菜单中插入/追加.

Insert/Append into the menu via InsertMenu()/AppendMenu().

最后,调用 TrackPopupMenu().

Finally, call 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); 
        }

这篇关于如何在列表框右键单击上创建上下文菜单?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-04-26 01:02:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1126863.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:右键   上下文   单击   菜单   如何在

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!