wxWidgets中的可切换菜单栏(何时隐藏?)
Toggleable MenuBar in wxWidgets (when to hide?)
我想让wxWidgets应用程序中的菜单栏可以像Firefox和Windows资源管理器那样切换。这意味着当它被隐藏并按下ALT键时,它就会显示出来。这相对容易:当在成员变量m_pMenuBar
中创建菜单时,我保存菜单,并在GetKeyCode() == WXK_ALT
时捕获wxEVT_CHAR_HOOK
,用wxFrame::SetMenuBar(m_pMenuBar)
启用菜单。
但现在我想知道什么时候该再次禁用菜单。我知道wxFrame::SetMenuBar(nullptr)
可以禁用。显然,当在相应的wxEVT_MENU
事件中单击菜单项时。但在支持这种可切换菜单的程序中,当你按下一个键(这不是快捷方式)或点击屏幕上的某个地方(不要点击菜单)时,菜单也会被隐藏。感觉菜单"失去了焦点,失去了意义"。由于我已经在拍摄wxEVT_CHAR_HOOK
,所以可以在按键时隐藏。鼠标的问题更复杂。我试过一个计时器来检查是否按下了鼠标按钮,但这看起来很难看,当你选择子菜单时也不起作用。
所以我的问题是:我应该在什么时候或在哪些事件上隐藏菜单?
非常感谢!jffmichi
当重写wxApp::FilterEvent()时,这似乎是一种罕见的情况:一旦显示菜单栏,设置一个标志,并在获得鼠标事件时在该方法的重写版本中检查它。如何检测点击是否发生在菜单上仍然是一个问题,您可能需要计算wxEVT_MENU_{OPEN,CLOSE}
,并且只有在当前没有打开菜单时才关闭菜单栏。
最后请注意,在OS X下,菜单栏根本无法隐藏(但您可以切换到全屏模式),您不应该尝试执行任何操作。
相关文章:
- 何时在引用或唯一指针上使用移动语义
- 何时提供默认参数作为模板参数
- C++-明确何时以及如何调用析构函数
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 结构和双指针隐藏在其他结构中,多层混淆
- 在以唯一ptr为值的C++映射中,动态内存何时会被销毁
- 何时应通过引用传递矢量参数而不是按值传递矢量参数?
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 如果非动态变量被指针引用,何时超出范围?
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 何时定义QT_NO_CONTEXTMENU?
- 参数包构造函数在类模板中隐藏用户定义的转换
- 如何等待窗口隐藏在Qt中?
- 如何使用类型别名从模板化类中隐藏模板列表
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 何时为派生类初始化 vptr?
- 如何知道何时调用删除以及何时调用 delete[] C++?
- 指针的 C++ 动态数组 - 何时需要使用它?
- wxWidgets中的可切换菜单栏(何时隐藏?)
- 何时以及为什么父类操作符重载隐藏在子类中