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

MFC - Deactivating all buttons except one

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

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

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

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

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

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

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

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