其实是用 create 的方式创建非模式对话框(不是 domodal),然后作为子窗口显示。转换时,把需要的子窗口显示出来并放到正确的位置,把其余的都隐藏就可以了。 当然你要先创建好一个窗口(可以是对话框,比如是 cparentdlg),上面放按钮(显示“上一步”或“下一步”),然后用 create 的方式创建几个非模式对话框(比如时 csettingdlg1,csettingdlg2)。 在 cparentdlg 中定义 csettingdlg1 m_dlgsetting1 ; csettingdlg2 m_dlgsetting2 ; 然后再 cparentdlg::oninitdialog 中 m_dlgsetting1.create(csettingdlg1::idd,m_hwnd) ; m_dlgsetting2.create(csettingdlg2::idd,m_hwnd) ; // 注意检查 create 的返回之是否为true // 还要注意此时2个对话框都是隐藏的,要 m_dlgsetting1.showwindow(sw_show); 并且用 m_dlgsetting1.movewindow 放到你需要的位置。 如何使新建的MFC单文档程序界面最大化 操作步骤: 1 通过建立MFC单文档的应用程序。 2 通过右侧的选项卡,点开Globals,点击theApp,定位到代码theApp处。由此往下,在InitInstance()函数内,找到 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); 在其下面添加代码:m_nCmdShow = SW_SHOWMAXIMIZED; 在代码 if (!ProcessShellCommand(cmdInfo)) return FALSE;下添加: m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); 3 如何在屏幕上显示出程序界面的大小? 在View类添加一个函数: void show(CDC *pDC); void CTestScreenView::test(CDC *pDC) { char buf[30]; int x, y; CRect windowRect; GetClientRect_r(&windowRect); x = windowRect.Width(); y = windowRect.Height(); wsprintf(buf, "width = %d, height = %d", x, y); pDC->TextOut(10, 10, buf, strlen(buf)); } 在OnDraw()函数中调用显示即可。