我正在使用win32创建一个窗口:
HWND mainWnd = CreateWindow(...);
现在我可以添加gui元素作为mainWnd的子元素。然而,这很快变得有点乏味,我想使用Visual Studio内置的设计器来帮助我。 我注意到在Add Resource下有一个Dialog条目。 IDD_FORMVIEW对话框中看起来最通用,所以我添加了其中一个。接下来,我使用设计师为其添加了gui元素。
现在我想把它当作我的mainWnd的孩子。 我该怎么做?
我发现了一些使用DialogBox的例子,但我不想要一个单独的对话框,我希望这个窗口是我的mainWnd的孩子。
答案 0 :(得分:2)
Visual Studio中的设计器适用于创建对话框,而不是任意窗口。
话虽如此,有几种方法(按难度递增顺序):
使主窗口成为对话框。 Petzold's book有一个使用对话框作为程序主窗口的示例。 (如果我没记错的话,那就是计算器示例。)
创建对话框,然后在显示之前,将其样式更改为WS_CHILD
,将其扩展样式更改为WS_EX_CONTROLPARENT
,并将其显示在主窗口中。要使所有导航内容正常工作,您必须在消息泵中添加IsDialogMessage
次呼叫。这是可行的,但很难让一切运转良好。
1和2的混合,您可以在其中为主窗口创建一个对话框,然后为内容创建第二个对话框(使用DS_CONTROL
),并将第二个对话框放在第一个对话框中。我自己从未尝试过这种方法,但它似乎应该有效。
编写自己的代码来解析对话框资源并创建子窗口,这基本上是重做CreateDialog
为您做的大量工作。
鉴于您希望使用GUI来设计UI,我怀疑只有第一个解决方案很简单,您才会感兴趣。
答案 1 :(得分:1)
使用CreateDialog API从资源创建窗口。如果您不希望它看起来像对话框,则从资源属性中删除标题栏样式。
答案 2 :(得分:0)