void CTestWndDlg::OnButton1()
{
if(wndDlg.m_hWnd == NULL)wndDlg.Create(IDD_DIALOG1, NULL);
wndDlg.ShowWindow(SW_SHOWNORMAL);
this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
} 如上段程序,我在主窗体上创建了非模态对话框wndDlg,主窗体为TestWndDlg。
问题是TestWndDlg虽然能够获得焦点及响应用户输入,但它的Z序总是在wndDlg之后(被wndDlg覆盖),用SetWindowPos改Z序都没用!这是何原因(VB中是不存在此问题哦)?希望有强人解答,先谢啦。
{
if(wndDlg.m_hWnd == NULL)wndDlg.Create(IDD_DIALOG1, NULL);
wndDlg.ShowWindow(SW_SHOWNORMAL);
this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
} 如上段程序,我在主窗体上创建了非模态对话框wndDlg,主窗体为TestWndDlg。
问题是TestWndDlg虽然能够获得焦点及响应用户输入,但它的Z序总是在wndDlg之后(被wndDlg覆盖),用SetWindowPos改Z序都没用!这是何原因(VB中是不存在此问题哦)?希望有强人解答,先谢啦。
CSDN没高人了难道
//CDialog m_Dlg; 假设其ID为IDD_DIALOG1
若写成
m_Dlg.Create(IDD_DIALOG1, NULL);
其效果等同于m_Dlg.Create(IDD_DIALOG1);
则父窗口就成了缺省的主对话框了
m_Dlg.Create(IDD_DIALOG1, GetDesktopWindow());
这样父窗口就成了桌面,此对话框与主对话框成了兄弟关系,可以相互切换
但也有副作用,即两个对话框都会显示在任务栏中
这个问题困扰了我好几天,总算搞明白了。