与流行的观点相反,您不需要groupbox控件,或任何其他此类外部“容器”(无论如何,groupbox都不是,它只是一个按钮工件).以下介绍如何在不需要组框的情况下执行此操作.如果您想要一个功能上有助于此处描述的布局的组合框,请转到本答案的编辑部分,在那里我将解释如何实现OP的特定需求.
自动单选按钮“库”通过使用两个关键窗口样式属性WS_GROUP和WS_TABSTOP来工作.为你的两个“银行”执行以下操作,我将亲切地称之为Bank1和Bank2:
> Bank 1:第一个单选按钮应该同时具有WS_GROUP |控件样式中的WS_TABSTOP.剩下的单选按钮应该没有这些按钮,并且必须是兄弟顺序(在DIALOG脚本中它们会立即相互跟随;在动态创建中它们是按顺序创建的).
> Bank1中最后一个单选按钮后的第一个子控件应该至少具有WS_GROUP样式,并且WS_GROUP | WS_TABSTOP,如果它是制表符停止的控件.
> Bank 2:第一个单选按钮应该同时具有WS_GROUP |控件样式中的WS_TABSTOP.剩下的单选按钮应该没有这些按钮,并且必须是兄弟顺序(在DIALOG脚本中它们会立即相互跟随;在动态创建中它们是按顺序创建的).
> Bank2中最后一个单选按钮后的第一个子控件应该至少具有WS_GROUP样式,并且WS_GROUP | WS_TABSTOP,如果它是制表符停止的控件.
如上所述的布局允许您“选项卡”到单选按钮库,并使用箭头键切换选择.然后,您再次“选项卡”离开该银行并前往下一个制表位.请记住,当您按Tab键(或使用Shift-Tab之前)时,对话框管理器将始终移动到下一个WS_TABTOP子控件.如果跳转到的控件是自动类型,则所选控件将是最近WS_GROUP中的“选定”控件.
如果它有帮助,抓住草图板,在纸上绘制,并在制表位上粘贴“T”,并在组属性上粘贴“G”,如上所述.一旦可视化,它可能会更加清晰.查看对话框资源脚本,了解这些脚本如何协同工作以获得更多洞察力.
注意:如果您想使用围绕这些的组框,您可以.对话管理器通过将控件与基于最后一个用WS_GROUP标记的控件的组相关联来工作,之后具有WS_TABSTOP的第一个控件被认为是该组的制表符跳转点.首先插入一个Groupbox(不能是一个tabstop),然后在第一个单选按钮(这次没有WS_GROUP)上使用WS_TABSTOP的单选按钮控件也可以.我通常发现更容易安排我的单选按钮而不依赖于groupboxes.
编辑一张图片说千言万语
为了您的图片,我可能会按以下顺序创建以下子项:
>“图标”组框,包括WS_GROUP样式.
>“信息”自动单选按钮,包括WS_TABSTOP
>所有其他“图标”组单选按钮.不要包含WS_TABSTOP或WS_GROUP.
>“按钮”组框,包括WS_GROUP样式.这将关闭当前控制组并启动下一个控制组.
>“AbortretryIgnore”自动单选按钮,包括WS_TABSTOP
>所有其他“按钮”组单选按钮.不要包含WS_TABSTOP或WS_GROUP.
>“按钮”单选按钮后的下一个控件必须包含WS_GROUP.这将关闭当前控制组并启动下一个控制组.
显然所有其他的儿童控制风格,可见性等也需要正确使用,当然孩子们都应该有独特的ID.我假设你已经完成了其余的工作.