非模式对话框就像PhotoShop里面的Toolbar,总显示在其父窗口上面。如何将非模式对话框显示在父窗口后面呢?
一种解决办法是:
建立非模式对话框时Create的第二个参数用GetDesktopWindow(),
m_pDlg->Create(IDD_,GetDesktopWindow());
如果需要恢复Toolbar的属性:
m_pDlg->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
现在有出现了一个问题:系统的任务栏上出现了非模式对话框的图标,好像该对话框和父窗口是两个应用。解决的办法是:
1 定义对象 CWnd *m_pWnd,该对象的父窗口为GetDesktopWindow,设置该对象ShowWindow(SW_HIDE);
2 将非模式对话框的父窗口设置为m_pWnd。