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中是不存在此问题哦)?希望有强人解答,先谢啦。

解决方案 »

  1.   

    自己顶了
    CSDN没高人了难道
      

  2.   

    指定其父窗口为桌面  
       
      //CDialog   m_Dlg;   假设其ID为IDD_DIALOG1  
      若写成  
      m_Dlg.Create(IDD_DIALOG1,   NULL);  
      其效果等同于m_Dlg.Create(IDD_DIALOG1);  
      则父窗口就成了缺省的主对话框了  
      m_Dlg.Create(IDD_DIALOG1,   GetDesktopWindow());  
      这样父窗口就成了桌面,此对话框与主对话框成了兄弟关系,可以相互切换  
      但也有副作用,即两个对话框都会显示在任务栏中
      

  3.   

    看来还是激将法有效啊,多谢 youyingbo!
    这个问题困扰了我好几天,总算搞明白了。