我的问题其实很简单,譬如在主框架中控制一个非模态对话框,   
  当该对话框显示的时候,对话框总是出现在主框架的上面。   
  那怎么才能做到   
  当点击主框架的时候,主框架显示在最前面,而该非模态对话框显示在后面。   
  当点击对话框的时候,该非模态对话框才显示在最前面。 
  而且在创建非模态对话框时指定主窗口为它的父窗口

解决方案 »

  1.   

    你的需求就是非模态对话框的定义。对话框一般分为两种类型:模态类型(modal)与非模态类型(modeless)。所谓模态对话框,就是指除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上的对话框。非模态对话框则不会强制此种特性,用户可以在当前对话框以及其他窗口间进行切换。非模态实现代码如下:
    CXXXXDlg *dlg = new CXXXXDlg;
    dlg->Create(IDD_XXXX_DIALOG, NULL);
    dlg->ShowWindow(SW_SHOW);
      

  2.   

    因项目需要,我创建的是属性页对话框,并且指定主框架为它的父窗口,如下:
    CProperSheet* pDlg=new CProperSheet(string,NUL它L);
    pDlg->Create(this,-1,0);
      

  3.   

    因项目需要,我创建的是属性页对话框,并且指定主框架为它的父窗口,如下:
    CProperSheet* pDlg=new CProperSheet(string,NULL);
    pDlg->Create(this,-1,0);
      
      

  4.   

    一种解决办法是:
    建立非模式对话框时Create的第二个参数用GetDesktopWindow(),
    m_pDlg->Create(IDD_,GetDesktopWindow());现在有出现了一个问题:系统的任务栏上出现了非模式对话框的图标,好像该对话框和父窗口是两个应用。解决的办法是:
    1 定义对象 CWnd *m_pWnd,该对象的父窗口为GetDesktopWindow,设置该对象ShowWindow(SW_HIDE);
    2 将非模式对话框的父窗口设置为m_pWnd。
      

  5.   

    SetWindowPos(&wndTop,...,SWP_SHOWWINDOW)
    即可