如何访问尚未打开的功能区选项卡上的控件
How to access a control on a ribbon tab that has not been opened yet?
我有一个功能区应用程序,它有三个选项卡。在OnCreate事件中,我需要选中一个复选框,该复选框不在打开应用程序时显示的选项卡上。
问题是我不能勾选复选框。当我打开包含它的选项卡时,复选框处于未选中状态。我所知道的是,因为功能区是动态创建的,所以我想要访问的控件还不存在。
有什么方法可以访问复选框?
在创建控件后尝试检查控件,(例如)创建控件的事件。创建后,可以指定单击时将触发的过程,也可以指定是否检查该过程。希望这能有所帮助。
在WTL中,它非常简单:
-
您应该重写OnRibbonQueryState():
bool CMainFrame::OnRibbonQueryState(UINT nCmdID, REFPROPERTYKEY key) { switch (nCmdID) { case RID_SETTINGS_GUI_SHOWSTATUSBAR: if (IsEqualGUID(key.fmtid, UI_PKEY_BooleanValue.fmtid)) return m_showStatusBarCtrl.IsChecked(); } return DefRibbonQueryState(nCmdID, key); //Default WTL behavior }
-
添加您的处理程序:
COMMAND_ID_HANDLER(RID_SETTINGS_GUI_SHOWSTATUSBAR, OnShowStatusbarChanged) LRESULT CMainFrame::OnShowStatusbarChanged(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { m_showStatusBarCtrl.OnCheckboxChanged(); bool currState = m_showStatusBarCtrl.IsChecked(); ::ShowWindow(m_hWndStatusBar, currState ? SW_SHOW : SW_HIDE); UpdateLayout(); return 0; }
m_showStatusBarCtrl-是一个简单的状态包装器(bool)。
相关文章:
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- Win32编译器选项和内存分配
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 通过选项卡的文本设置QTabWidget顺序
- 通过ccmake在cmake中缓存依赖选项
- 如何传递多个 std::文件系统选项?
- 基于编译器选项的编译二进制路径
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- 如何应用 libcurl 的持久连接选项
- 文件中.dat Dlib 选项
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- Visual Studio C++ 它只构建选项卡中显示的文件吗?
- 在C++不适用于猜数字游戏的情况下再次播放选项
- Qt5 用户界面编译器:-i 选项不可用
- CMake - 更改共享库链接选项
- 如何访问尚未打开的功能区选项卡上的控件