在运行时将无模式对话框转换为模态

Jav*_*dro 9 mfc modal-dialog cdialog

我有一个对话框(CDialog派生类),可以以两种不同的方式使用(编辑模式和编程模式).

打开对话框以在编程模式下使用时,它是一个无模式对话框,用于修改主视图(工具栏的类型).当它在编辑模式下打开时,用户可以更改对话框本身的配置,在这种情况下,它是一个模态对话框.

现在它们是两个不同的对话框,几乎没有差异,我想只需要对话框,让用户只需按对话框中的按钮即可在编程模式和编辑模式之间切换.

所以我需要在运行时在模态对话框中转换无模式对话框,反之亦然.有办法实现吗?

谢谢.

Jav*_*dro 13

也许有人可能有兴趣在将来做类似的事情,这是我最终做到的方式:

我使用主框架的这两个功能:CMainFrame::BeginModalState()CMainFrame::EndModalState().

这些功能的问题与禁用父窗口的问题相同.您要制作模态的窗口也会被禁用.但解决方案很简单,只需在调用后重新启用窗口即可BeginModalState.

void CMyDialog::MakeModal()
{
   //disable all main window descendants
   AfxGetMainWnd()->BeginModalState();

   //re-enable this window
   EnableWindow(TRUE);
}

void CMyDialog::MakeModeless()
{
   //enable all main window descendants
   AfxGetMainWnd()->EndModalState();
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.