C win32选项卡控件

好吧,首先我使用win32 api在C编码,没有mfc,没有.net,没有wxwidgets。 我用WC_TABCONTROL类创建了一个窗口,并添加了标签,除了...我需要在每个标签中都有内容,我从msdn得到了我需要为每个页面创建对话框的印象,然后在用户选择一个选项卡时加载对话框。 唯一的问题是我的主窗口不是一个对话框,因此使得该选项卡的对话框完全适合不起作用。

所以我想知道是否有更好的方法来做到这一点? 我想过隐藏和显示每个标签的不同控件,但这似乎不是一个好主意。

我想要的是,当我的应用程序启动时,它会调整窗口大小和选项卡控件的大小以适应所有选项卡(3-4选项卡),并且窗口不会调整大小,我想这可以简化事情一点点。 我通过以下msdn上的示例(将每个对话框加载到内存中,循环每个对话框并将RECT设置为所需的最小大小然后调整所有内容的大小)来实现此目的,问题在于大小在对话框单元中,而我无法将它转换为像素,因为我还没有HWND到对话框。

基本上我的问题是什么是使用选项卡控件管理窗口上控件的最佳方法。 所以如果我有一个选项卡控件,并且用户从tab1更改为tab2,我希望向用户显示不同的控件。


MSDN的基本思想是在每个选项卡的HWND中设置控件。 这样做的好处是,您可以通过隐藏/显示父HWND来隐藏/显示HWND中的所有控件。 这意味着从一个标签到另一个标签只是一个隐藏一个容器HWND的情况,并且显示另一个容器,比隐藏/显示控件组更简单更优雅。 (它也将每个窗格的对话框处理程序代码分开,这通常是您想要的。)但是,这两种方法都是允许的:创建对话框通常更方便,但您不需要。

这些容器HWND不必是对话框,但使用对话框意味着Windows将为您填充.rc文件中的内容并自动处理键盘切换。 如果你创建自己的HWND,你必须自己做。 你可以采取一种混合的方法:首先使用对话框,但如果需要,可以在WM_INITDIALOG处理程序中添加自己的控件,甚至可以处理WM_SIZE以执行自定义布局,以便控件更好地适应。

如果您使用创建自己的HWND路由,请查找IsDialogMessage()以获取将键盘Tab键支持添加到您自己的HWND的简单方法; 并检出WS_EX_CONTROLPARENT样式,以便在选项卡本身和容器HWND中的控件之间起作用。

回复:“问题是,大小是在对话框单位,我不能将其转换为像素,因为我没有HWND的对话框呢。” - 您可以使用CreateDialog将对话框创建为不可见 - 从.rc文件中省略WS_VISIBLE - 然后您可以在显示它之前适当地测量/调整大小。

链接地址: http://www.djcxy.com/p/7061.html

上一篇: C win32 tab control

下一篇: How to give visitors to a mobile website offline access to CouchDB data?