如何防止 C++ Win32 上下文菜单关闭?

4

我希望在我的win32 c ++应用程序中防止上下文菜单被关闭。我希望当用户点击子菜单项时,能够防止子菜单被关闭。我需要实现或覆盖哪个消息?


上下文菜单的正常行为是在选择菜单后隐藏它。您可以重新打开它。顺便说一句,winapi(Win32 API)与C一起使用,您的c++标签/标题不正确。MFC需要C ++。 - i486
2个回答

1

1
该链接的页面几乎没有任何内容。请在发布答案时添加实际内容,而不仅仅是一个链接。这样,如果链接变成404,您的答案仍将有用。 - David Rector

1

已经有一段时间没有做win32开发了,但是我脑海中浮现出的一些随机想法也许会有所帮助:

1)也许你可以尝试在项目被点击后再次显示上下文菜单

2)或者采用复杂的方式——查找,然后子类化上下文菜单窗口,拦截WM_CLOSE/WM_DESTROY消息

总的来说,这似乎是一个奇怪的要实现的事情。如果您想在选择后将其保留在屏幕上,也许菜单不是正确的UI元素。也许您需要一个非模态对话框?


这是一个绑定到通知区域图标右键单击的设置组合框,如果您想同时更改两个设置,它会非常烦人(因为每次选择一个项目时它都会关闭)。在C#中,您可以通过事件取消来防止这种行为。 - blejzz
2
您无法取消Win32菜单的关闭,相反,您可以创建一个类似菜单的窗口,并具有您想要的任何行为(包括不自动关闭)。请参见平台SDK中的FakeMenu示例。 - Raymond Chen
@blejzz .NET 给你比 Win32 更多的控制权。这可能不是很容易实现。祝你好运! - Dan G
@Raymond Chen,您错了。请看这个例子:http://codexpert.ro/blog/tag/wh_msgfilter/ - Irbis
我改口了。菜单本身不支持机制,但我猜你可以“打破常规”,通过钩子改变消息处理规则。 - Raymond Chen

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