我做了一个模式对话框A,里面有一个按钮,然后弹出一个非模式对话框B,但是A一直在B的后面,有什么方法改变一下,点谁谁就在前面呢?

解决方案 »

  1.   

    在创建B时create函数写成
    Create(对话框ID, GetDesktopWindow());
      

  2.   

    virtual BOOL Create(
       LPCTSTR lpszTemplateName,
       CWnd* pParentWnd = NULL 
    );
      

  3.   

    建立非模式对话框时Create的第二个参数用GetDesktopWindow(),
    m_pDlg->Create(IDD_,GetDesktopWindow());
    如果需要恢复:
    m_pDlg->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);但是这样在系统的任务栏上会出现非模式对话框的图标,好像该对话框和父窗口是两个应用。解决的办法是:
    1 定义对象 CWnd *m_pWnd,该对象的父窗口为GetDesktopWindow,设置该对象ShowWindow(SW_HIDE);
    2 将非模式对话框的父窗口设置为m_pWnd。