我想要为更改应用程序的设置创建一个对话框窗口。下面是Adobe的屏幕截图。在使用Spy++之后,我猜:
在右侧,所有控件(按钮、组合式boxes...ect)都属于GroupBox。
对于左侧TreeView控件中的每个类别,有一个相应的GroupBox,它将与此类别相关的所有控件分组。
当用户在不同类别之间进行选择时,它隐藏了一个GroupBox,并显示了另一个GroupBox。
但是在下面的源代码(xxx.rc,资源文件)中,我没有看到任何地方可以指定对话框项的“父”。
即使我使用“资源视图”(不是作为代码查看)打开xxx.rc,我也找不到在其属性页中指定对话框项的父项的任何选项。
我想知道如何将父项(在我的例子中是GroupBox )分配给对话框项,或者将对话框项组分配给.rc文件中的单个组,即当创建对话框项时。(我想我们可以通过修改.rc文件来做到这一点。)
GROUPBOX "View",IDC_SECTION_VIEW,101,6,228,88
LTEXT "Default &Layout:",IDC_DEFAULT_LAYOUT_LABEL,107,19,108,9
COMBOBOX IDC_DEFAULT_LAYOUT,215,17,108,64,CBS_DROPDOWNLIST | WS_TABSTOP
LTEXT "Default &Zoom:",IDC_DEFAULT_ZOOM_LABEL,107,36,108,9
COMBOBOX IDC_DEFAULT_ZOOM,215,34,108,149,CBS_DROPDOWN | WS_TABSTOP
CONTROL "Show the &bookmarks sidebar when available",IDC_DEFAULT_SHOW_TOC,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,53,216,9
...
...
...

发布于 2012-12-25 14:49:25
我想知道如何分配一个家长..。
SetParent Windows。您提供控件的HWND和假定的新父级的句柄。
在资源脚本中,控件将是对话框本身的子控件,但在运行时,您可以自由地更改这些控件,并将它们分组到您感兴趣的层次结构中。
您还可以考虑将假定的子组放在单独的对话框模板中,并将其作为“复合控件”--单独实例化,并成为更高级别对话框的子级。
UPD。看看这个简单的项目(C++/ATL):AtlChildDialog。特别是,INITIDIALOG处理程序
ATLVERIFY(m_ChildDialog.Create(m_hWnd, (LPARAM) this));
ATLVERIFY(m_ChildDialog.MoveWindow(50, 50, 200, 150));
m_ChildDialog.m_EditWindow.SetWindowText(_T("Some Text"));
m_ChildDialog.ShowWindow(SW_SHOWNORMAL);
m_ChildDialog.SetFocus();


所有这些都在运行时进行:

https://stackoverflow.com/questions/14031580
复制相似问题