huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


模态对话框就是:如果当前窗口尚未关闭,父窗口就无法被操作,就像 MessageBox 绑定在某个窗口上面的效果一样,如果不先把 MessageBox 确定掉,就没办法操作背后的窗口。


模态对话框在显示之后,就不能对父窗口进行操作。
非模态对话框在显示之后,还可以对其它窗口进行操作。


实现方法可以参考:https://www.cnblogs.com/zplutor/archive/2011/02/20/1958973.html 

总的来说,首先,弹出的窗口在 CreateWindow 的时候就要设置 hParent,然后为了实现“模态”,需要像这样:

EnableWindow(hParent, false);

// 此处创建窗口,就像创建一个正常的窗口一样。

EnableWindow(hParent, true);
SetForegroundWindow(hParent);    // 由于此时 hParent 会最小化,必须将其提到前面


但是为什么不能用 SetParent?我其实不太清楚到底能不能,但是要是直接用的它的话会导致整个窗口直接嵌在父窗口里面,拖不出来的那种,就像控件一样。顺便一说,如果真的用了 SetParent 之后,还要记得此时子窗口的坐标就是相对父窗口了,所以得要 MoveWindow,将子窗口挪到父窗口的能看到的位置。




返回首页


Copyright (C) 2018-2024 huidong