使用什么窗口样式来匹配属性表行为?

问题描述 投票:0回答:1

我正在尝试编写一个具有非模式对话框的程序,该对话框的行为与经典属性表非常相似。也就是说,它将有一个选项卡控件,每个选项卡将显示一个非模式子对话框作为选项卡内容。

现在我对 Tab 键的处理方式有疑问。

每个子对话框资源当前指定 DS_CONTROL、WS_TABSTOP、WS_CHILD 和 WS_VISIBLE 样式,并以选项卡控件作为父窗口创建。如果我使用 WS_EX_CONTROLPARENT 扩展样式创建选项卡控件,则子对话框的控件正确地属于父对话框的 Tab 键顺序的一部分,但选项卡控件本身会被跳过。如果我不指定 WS_EX_CONTROLPARENT,则选项卡控件正确地属于父级选项卡键顺序的一部分,但子对话框控件则不是。

我还尝试为子对话框资源提供 WS_EX_CONTROLPARENT 扩展样式,但这没有什么区别。

是否有一些我忽略的窗口样式组合?

我也考虑过通过选项卡控件的子类化来实现这一点,但如果窗口样式可以的话,这似乎是一个非常繁重的解决方案。

winapi
1个回答
0
投票

正如评论中所讨论的,所需的样式是为子对话框提供 DS_CONTROL 样式,同时使它们成为父对话框的子项,而不是直接作为选项卡控件。

接下来就是在处理 TCN_SELCHANGING 时隐藏旧对话框并在 TCN_SELCHANGE 期间显示新对话框的问题。还需要在 TCN_SELCHANGE 处理程序中更新子对话框的大小/位置以及 z 顺序(使新选择的窗格成为选项卡控件的直接跟随者)。

© www.soinside.com 2019 - 2024. All rights reserved.