使用CreateWindow创建win32模式窗口

cag*_*bal 16 c++ windows winapi modal-dialog

我用CreateWindow()它创建一个窗口并显示它ShowWindow().但是应该禁用创建它的父窗口,直到用户从此窗口返回,即它应该模拟模式对话框.

Mau*_*gan 18

确保在显示弹出窗口后设置hwndParentin CreateWindow并使用EnableWindow(hwndParent, FALSE)以禁用父级.然后EnableWindow(hwndParent, TRUE)在弹出窗口关闭后启用父级.

  • 在关闭弹出窗口之前,你必须`EnableWindow(hwndParent,TRUE)`*,参见[正确的禁用和启用窗口的顺序](http://blogs.msdn.com/b/oldnewthing/archive/2004/ 2月27日/ 81155.aspx) (7认同)

jef*_*ffm 13

模态,第1部分:UI模态与代码模态解释了如何执行此操作,以及您可能不想要的原因.

  • 作为一项规则,我投票所有Old New Thing参考. (6认同)
  • 老新事物参考很棒,但可惜它只是一个链接答案。您可能想用自己的话重新表述文章中的一些内容。 (2认同)

And*_*ndy 4

您需要考虑模态窗口意味着什么 - 基本上,窗口的父窗口被禁用。执行此操作的唯一自动方法(据我所知)是调用DialogBox()创建模式对话框。然而,既然你想使用CreateWindow(),那么你需要做的就是自己手动禁用父窗口。

理想情况下,最好采用对话框路线(因为操作系统确切地知道创建模式窗口必须做什么),但我认为如果您必须使用它,则存在此选项。