您的位置:首页 > 产品设计 > 产品经理

模态对话框/非模态对话框/系统对话框CColorDialog 置顶问题/显示最前面/TopMost

2016-09-21 17:53 681 查看
问题.  当主对话框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!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: