积极答复者
MFC非模态窗口上的控件不显示

问题
-
我创建了一个非模态窗口,创建代码如下:
INITDlg *initDlg=new INITDlg();
BOOL bResult = initDlg->Create(IDD_INITIAL_DIALOG,this);
ASSERT(bResult);
initDlg->ShowWindow(SW_SHOW);
Sleep(2000);
initDlg->DestroyWindow();
delete initDlg;
但是运行后,对话框上的控件都没有显示。如果将initDlg->ShowWindow(SW_SHOW);改成initDlg->ShowWindow(SW_SHOWMAXIMIZED);则对话框上的控件全部正常显示。跟踪了显示过程,SW_SHOW只调用了一次OnSize(),而SW_SHOWMAXIMIZED调用了两次。
请教大家出现以上问题是什么原因,我希望窗口在正常大小下显示控件,有没有什么办法解决?
答案
-
非模态对话框和主窗口共用一个消息循环,所以在ShowWindow以后您又用了Sleep()操作,导致当前有些消息处理被阻塞,然后您用调用了DestroyWindow来销毁该非模态对话框窗口。
Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
- 已标记为答案 minizon 2012年7月6日 7:22
全部回复
-
非模态对话框和主窗口共用一个消息循环,所以在ShowWindow以后您又用了Sleep()操作,导致当前有些消息处理被阻塞,然后您用调用了DestroyWindow来销毁该非模态对话框窗口。
Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
- 已标记为答案 minizon 2012年7月6日 7:22