问题. 当主对话框A是非模态对话框时,对话框B等以模态对话框弹出时, 如CColorDialog dlg; dlg.DoModal(); 时无法位于最前面,怎么办?
解决方法:( 我们分3种情况考虑)
1. 将主对话框A也设置为模态对话框。后来弹出的模态对话框自然在最前面;
2. 若副对话框B不是等系统对话框(如CColorDialog),而是自定义对话框,则 在系统消息OnInitDialog() 中设置
SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE|SWP_NOSIZE); //置顶
3. 若副对话框是系统对话框,如CColorDialog,则重写OnInitDialog(), 代码如下:
// 说明:置顶颜色对话框 [9/21/2016 ZOSH];
class CMyTopColorDialog : public CColorDialog
{
public:
BOOL OnInitDialog()
{
SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE|SWP_NOSIZE);//置顶
return CColorDialog::OnInitDialog();
}
CMyTopColorDialog()
{
}
~CMyTopColorDialog()
{
}
};
因此,将CColorDialog dlg; dlg.DoModal(); 替换为CMyTopColorDialog dlg; dlg.DoModal(); 即可!
2016年9月记 - ZOSH!