TabControl 上的 WINAPI showing/hiding 控件

WINAPI showing/hiding controls on TabControl

在 Windows API 中处理 showing/hiding TabControl 控件的方便方法是什么? 我已经看到示例,其中对消息 WM_NOTIFY/TCN_SELCHANGE 实施了反应,然后遍历所有控件并通过代码选择要 show/hide 的内容。 我希望 Windows 有一个内部机制来处理这个问题,比如创建父项或将控件与特定选项卡相关联。

通常的方法是使用 CreateDialog 创建一个无模式对话框以包含每个选项卡的子控件,然后将无模式对话框的 HWND(或导致 HWND 的其他值)分配给 TCITEM 的 lParam。

然后在 TCN_SELCHANGE 期间,您将获得足够的信息(TCITEM 的 lParam 是提供的部分之一)来简单地隐藏旧选项卡的无模式对话框并显示新选项卡的无模式对话框。

我更喜欢将这些无模式对话框设为选项卡控件本身的子 windows,因为这样可以使用 TCM_ADJUSTRECT 轻松计算位置,而无需使用 MapWindowPoints。