应用中有一非模式对话,用Create(IDD_DIALOG1,this)显示它,使它始终位于父窗口上面,当其它应用运行时,此非模式对话就被遮盖,怎样让这个非模式对话始终位于屏幕最上面(此对话窗口比较小,对用户很重要)

解决方案 »

  1.   

    ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
      

  2.   

    不要它的父窗口为NULL... m_dlg.Create(IDD_DIALOG1,this);
    其中第二个参数就是设置它的父窗口...默认情况下是NULL
      

  3.   

    SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);you can also try MB_SYSTEMMODAL flag
      

  4.   

    学习!to kingcom_xu(刀是用来杀人的!) 
    我使了一下,好像并非如此:
    你说的:m_dlg.Create(IDD_DIALOG1,this);
    这个this指的是?CWnd* pParentWnd 这个参数原型吗?如果是,我使过了,不论this或NULL
    都不完美。比如:一个自己创建的普通对话框 MyDialog.
    MyDialog上的一个按钮,创建了一个
    无模式的CFindReplaceDialog类型的对话框,
    安你说的,在Create的时候设置,
    结果是,MyDialog还是可以被激活。
      

  5.   

    应用中有一非模式对话,用Create(IDD_DIALOG1,this)显示它,使它始终位于父窗口上面,当其它应用运行时,此非模式对话就被遮盖,怎样让这个非模式对话始终位于屏幕最上面(此对话窗口比较小,对用户很重要)
      

  6.   

    m_dlg.Create(IDD_DIALOG1,this);
    后m_dlg永远居于它的父窗口之上,但一旦它的父窗口失去焦点那么它们都会被遮盖........
      

  7.   

    就是这样了SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
      

  8.   

    学习
    个人认为SetWindowPos()“无耻”了些,要是能置前的同时设为活动窗口就好了
      

  9.   

    那  kingcom_xu(刀是用来杀人的!) 你说的对吗?