class CMainDialg : CDialog
{
public:
    .....
    CDialog1 *dlg1;
    
    void ShowDlg1();
}void CMainDialog::ShowDlg1()
{
    if ( dlg1 == NULL )
    {
       dlg1 = new CDialog1;
       dlg1->Create(IDD_DIALOG1);
    }
    else dlg1->SetActiveWindow();
}为什么dlg1总是显示在maindialog的前面?怎么能使dlg1和maindialog并列呢?试过dlg1在winApp中创建,也不行,除非在maindialog创建之前先创建dlg1。而且如果对dlg1使用setwindowpos的话,两个窗口的z序会一起变。
    是否有谁能给点建议?先谢了!

解决方案 »

  1.   

    如果这两个窗口没有 必然的联系,可以使用MoveWindow来并列显示两个窗口 ,使用setwindowpos也是可以的,你可以禁止z序的改变
      

  2.   

    两个Dialog 都SetWindowPos(wndTopMost,...)不知能不能达到你的目的
      

  3.   

    MoveWindow的话还是有联系的,至少位置上,我是希望看起来一点联系都没有,setwindowpos的话,我测试过dDlg1->SetWindowPos( &wndBottom, 0, 0, 0, 0,SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE),结果两个窗口都跑到后面去了,就是说会影响到主窗口的。
      

  4.   

    自己弄的数组, 记录窗口的z-order. 然后依次SetWindowPos(...)
      

  5.   

    对子窗体做SetWindowPos的时候会影响主窗体的状态的,所以像平常那样使用SetWindowPos是没用的