Jam*_*mes 8 c++ winapi window win32gui radio-button
首先,这不是MFC.
这是我一直在研究的裁剪版GUI:

正如您所看到的,我已经(尝试)使用以下代码创建两个不同的组:Icon和Button:
index->hAddT.hwndIndex[2] = CreateWindowEx(NULL,L"BUTTON",L"Icon",WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
200,135,120,170,WINDOWHANDLE,(HMENU)IDC_RADIOGROUP,(HINSTANCE)GetWindowLong(WINDOWHANDLE,GWL_HINSTANCE),NULL);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题,以及你可能看到的问题是,窗口只有一个单选按钮.这意味着用户不可能从Icon组中选择一个单选按钮,而从Button组中选择一个单选按钮.我已将每个单选按钮初始化为:
index->hAddT.hwndIndex[3] = CreateWindowEx(NULL,L"BUTTON",L"Information",WS_CHILD | BS_AUTORADIOBUTTON | WS_VISIBLE,
205,155,100,20,WINDOWHANDLE,(HMENU)IDC_RADIO1,(HINSTANCE)GetWindowLong(WINDOWHANDLE,GWL_HINSTANCE),NULL);
Run Code Online (Sandbox Code Playgroud)
我想以某种方式将"Icon"组的单选按钮与"按钮"组的单选按钮分开,如果这是有道理的,因此每个组都有一个单选按钮.这将如何成为可能,它是否需要我创建一个新的窗口和一个新的回调程序只是为了有一个额外的单选按钮.必须有另一种方法来分组这样的子项.
2个单独的单选按钮组以相同的形式WINAPI(无MFC) 该链接对我的目的没有任何用处.
我有作为Windows第五版的编程,由Charles Petzold旁边作为参考,他在Group Boxes部分中说"组框通常用于包含其他按钮控件",但是没有真正的例子.
Who*_*aig 13
与流行的观点相反,您不需要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_TABSTOP的单选按钮控件(这次没有WS_GROUP)也可以.我通常发现更容易安排我的单选按钮而不依赖于groupboxes.
编辑一张图片说千言万语
为了您的图片,我可能会按以下顺序创建以下子项:
显然,所有其他的儿童控制风格,可见性等也需要正确使用,当然,孩子们都应该有独特的ID.我假设你已经完成了其余的工作.