我有一个可以在两种不同的方式(编辑模式和编程模式)中使用的对话框(CDialog派生类)。
当对话框打开在编程模式中使用它是一个无模式对话框,它用于修改主视图(一种工具栏的)。 当它在编辑模式下打开,用户可以改变对话框本身的配置,在这种情况下,它是一个模式对话框。
现在他们与一些区别两种不同的对话,我想有只想对话框,让编程模式和编辑模式之间的用户的变化只是由对话框中的按钮。
所以,我需要将无模式对话框转换成一个模式对话框,反之亦然在运行时。 有没有办法才达到的?
谢谢。
我有一个可以在两种不同的方式(编辑模式和编程模式)中使用的对话框(CDialog派生类)。
当对话框打开在编程模式中使用它是一个无模式对话框,它用于修改主视图(一种工具栏的)。 当它在编辑模式下打开,用户可以改变对话框本身的配置,在这种情况下,它是一个模式对话框。
现在他们与一些区别两种不同的对话,我想有只想对话框,让编程模式和编辑模式之间的用户的变化只是由对话框中的按钮。
所以,我需要将无模式对话框转换成一个模式对话框,反之亦然在运行时。 有没有办法才达到的?
谢谢。
作为也许有人可能有意这样做,今后类似的东西,这是我最终做到了方式:
我用主框架的这两个功能: 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();
}
谢谢你的帮助。
这不能在没有关闭并重新打开的对话框中轻松完成。 然后,你可以调用的ShowWindow或作为的DoModal合适。
这是不正确的。 这是可以做到,如果你看一下MFC的源代码,你会发现,它的模式对话框是不是技术上连模式。 你将不得不做混日子,使这项工作正确的很多,但基本上你只需要禁用“模式”窗口的父窗口,并重新启用它时,“模式”窗口关闭。
我已经这样做了亲自所以这可能为你工作,虽然我不完全知道你正在尝试做的。