c++ - MFC - 停用除一个按钮以外的所有按钮

标签 c++ user-interface mfc

我有一个遗留的 C++ MFC 应用程序,它有一个带功能区的复杂 GUI。我有一个用例如下:用户单击功能区面板上的按钮 A 并执行一些操作。在他的工作完成后,在他可以使用其余的 GUI 控件之前,他绝对必须单击同一个功能区面板上的按钮 B,并且如果用户以这种方式不单击按钮 B 会导致崩溃,如果用户使用一些其他控件。

因此,为了处理这个用例,我想如果我可以在按钮 A 的事件处理程序中禁用除按钮 B 之外的所有程序的 GUI 控件,这将解决我的问题。然后按钮 B 的事件处理程序启用其余的 GUI控制。这样,我确保按钮 B 总是在按钮 A 之后被按下。

因此,我的问题如下:有没有办法一次性禁用所有 GUI 控件,然后单独启用和禁用控件?

我知道如何单独启用或禁用控件,但我还没有遇到允许禁用所有控件的 API。

最佳答案

通过这种方式,您可以获得功能区按钮的所有 ID:

CList<UINT, UINT>& lstItems;
CMFCRibbonBar *pRibbon = ((CMDIFrameWndEx*) AfxGetMainWnd())->GetRibbonBar();
pRibbon->GetItemIDsList(lstItems);

将这三行放在 View 的 OnInitialUpdate() 处理程序中。

然后使用列表比较通过您的 OnCmdMsg() 处理程序的 ID,以禁用所有按钮(按钮 B 除外)。

关于c++ - MFC - 停用除一个按钮以外的所有按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28635665/

相关文章:

c++ - 如何在另一个 CDialog 中显示嵌套的 CDialog?

c++ - 通过函数参数确定struct成员

c++ - 从覆盖函数调用覆盖函数

c++ - 将枚举转换为值的正确方法

user-interface - 通过 PowerShell 填写 Web 表单无法识别输入的值

c++ - 此 Windows 应用程序使用什么 API/SDK?

java - 将 ExplicitWait 方法调用到功能特性中

c++ - 来自::命名空间的 MFC 函数?

c++ - 使用 C++ 从 MySQL 数据库获取字符串时编码错误

使用 x86/x64 C API 的 C# AnyCPU 库 - 打包结构、调用和回调