基于对话框的应用程序。
CBaseDialog:主对话框。
void CBaseDialog::OnButton1()
{
    CSonDialog m_sonDlg;
    m_sonDlg.DoModal();
}
CSonDialog:模态对话框。在这对话框上生成一个非模态对话框。
void CSonDialog::OnButton2()
{
     m_pShowDlg->Create();//在CSonDialog的OnInitDialog()中new过了。
     m_pShowDlg->ShowWindow(SW_SHOW);
}
非模态对话框显示出来了。鼠标在CSonDialog对话框上进行操作时,如何让非模态对话框始终在最上层(浮在CSonDialog之上)?

解决方案 »

  1.   

    在CSonDialog的OnInitDialog加入
    SetWindowPos(GetStyle() &WS_EX_TOPMOST?
              &wndNoTopMost: &wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
      

  2.   

    whiskers(胡子):我试过了,还是不行。
    不是默认的。在主对话框上生成非模态对话框是自动在上层。但在模态子对话框上生成非模态对话框就不是了。如果不信,不防一试。
      

  3.   

    下面这个函数是在主对话框生成模态对话框中的一个按钮响应函数
    在这个函数的头文件中加准备非模态显示对话框的类和一个指针变量class unmodeldlg;CMydlg * mydlg;              //非模态对话框的指针变量然后在这个函数中添加代码,不要忘了在这个.cpp的上部加#include "mydlg.h"
    void CMydialog::OnOK() 
    {
    // TODO: Add extra validation here mydlg = new CMydlg;
    mydlg->Create(IDD_DIALOG_2,this);   //注意要加this
    mydlg->ShowWindow(SW_SHOW);

    // CDialog::OnOK();
    }
      

  4.   

    还是自己解决了。
    Create(IDD_DIALOG2,this);//在那个对话框中产生的,就以那个为非模态对话框的父窗口。这样就不回掉下去了。
    结账。不能给自己分,可惜可惜!!!
      

  5.   

    lingfeng8888(棱枫) :发出回复才看到你的回复。谢谢。