匯東網


模态对话框的实现,以及为什么不能用 SetParent 实现

[編輯] [转简体]
|
作者:huidong | 分類:【編程】Win32
[ 10 瀏覽 0 評論 2 贊 3 踩 ]

概要

正文

模态对话框就是:如果当前窗口尚未关闭,父窗口就无法被操作,就像 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,将子窗口挪到父窗口的能看到的位置。


[ 2] [ 3]


 評論區  0 條評論

+ 添加評論