我有一个主程序对话框MainDlg,在里面弹出了一个子对话框childDlg,可是子对话框总是摆在MainDlg的前面,怎么让主对话框MainDlg总是在最前啦。我在MainDlg的OnInitDialog()函数中用了下面的语句,仍然不行,为什么?
CRect _r;
GetWindowRect(&_r);
SetWindowPos(&wndTopMost, _r.left, _r.top, _r.Width(), _r.Height(), NULL);

解决方案 »

  1.   

    子窗口用非模态对话框或者试试
    SetWindowPos(&wndTopMost,
     _r.left, _r.top, _r.Width(), _r.Height(), WP_SHOWWINDOW);
      

  2.   

    不行啊,我本来就是用的非模态对话框。
    if ( !m_pVwDlg )
    {
    m_pVwDlg = new CVideoWindowDlg;
    m_pVwDlg->Create( IDD_DIALOG_VIDEOWND, this ); CRect _r;
    GetWindowRect(&_r);
    SetWindowPos(&wndTopMost, _r.left, _r.top, _r.Width(), _r.Height(), SWP_SHOWWINDOW);
    }这样还是不行,总是被弹出的窗口遮住
      

  3.   

    在你的子对话框中用SetWindowPos(&wndNoTopMost,....)设置一下试一试!
    在主对话中用SetWindowPos(&wndTopMost);
      

  4.   

    将MainDlg的指针传到ChildDlg类去,然后在ChildDlg的OnInitDialog()中将MainDlg提前试试
      

  5.   

    非模态对话框,或界面线程,都可以
    一个可以参考的例子:
    http://www.yangning.com/cgi-bin/topic.cgi?forum=1&topic=85&show=0
      

  6.   

    To wangjinwang(王进) :你给的程序也是一样的被遮住了呀
      

  7.   

    easy,在app::initinstance中先创建一个隐藏的窗口并让他成为主窗口