MFC的弹出窗口置顶!~

在编写MFC程序的时候,总是希望作为控制的面板页面在我们的窗口界面以外,并且最好的是浮动的,这样往往选用非模式的弹出式对话框。

 m_pPropertyDlg = new CPropretyDlg;
 m_pPropertyDlg->Create(IDD_DIALOG2);

不过新的问题出现了,点击主窗口的时候,作为参考参数显示的弹出式对话框就被遮挡在主窗体之后了,为了让弹出式窗口始终显示,我们让他置顶。

::SetWindowPos(m_pElementTree->m_hWnd,HWND_TOP,0,0,0,0,SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE);

这里有一个参数HWND_TOP,解释是放在窗口队列的最高位置,这个位置可选择HWND_TOPMOST和HWND_TOP,在使用HWND_TOP无效果以后,选用了HWND_TOPMOST;这样弹出式窗口就置顶了。本来事情到这里就结束了,不过还有一个问题随后发生了。当我切换到其他程序的时候,弹出式的两个非模式对话框依然是置顶的。这就让我重新开始思考HWND_TOP和HWND_TOPMOST的区别,查了很多的资料都是这么解释的:HWND_TOP是窗口队列的置顶,HWND_TOPMOST是所有窗口的置顶;但是HWND_TOP为什么设定没有效果呢?后来我才发现问题的所在,原来这两个窗体要知道自己的父窗体。那么我们在创建这个对话框的时候就必须要告诉他父窗体才行:

 m_pPropertyDlg = new CPropretyDlg;
 m_pPropertyDlg->Create(IDD_DIALOG2,this);

这样就完美了,看见没有~~弹出的对话框只在你本程序的窗口序列中置顶了!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值