首先这不是MFC。这是我一直在处理的GUI的裁剪版本:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8wM3AzVC5qcGcifQ==” alt =“在此处输入图像描述”>
如您所见,我已经(尝试过)使用代码创建两个不同的组,即图标和按钮:
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);
我有一个问题,您可能会看到,该窗口只有一个单选按钮。这意味着用户不可能从“图标”组中选择一个单选按钮,而从“按钮”组中选择一个单选按钮。我已经将每个单选按钮初始化为:
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);
我想以某种方式使单选按钮的“图标”组与单选按钮的“按钮”组分开,因此,每组将有一个单选按钮。这怎么可能,是否需要我创建一个新窗口和一个新的回调过程,才能有一个额外的单选按钮。必须有另一种方式将子项归为此类。
2 separate groups of radio buttons in the same form WINAPI (No MFC)该链接对我而言没有任何用处。
我旁边有Charles Petzold作参考的《 Windows Fifth Edition编程》,他在“组框”部分中指出“组框通常用于封装其他按钮控件,但没有真正的示例。
与流行观点相反,您不需要组框控件或任何其他此类外部“容器”(组框也不是,它只是按钮构件)。下面介绍如何根据组框的[[no要求执行此操作。如果要使用功能上有助于此处描述的布局的组框,请转到此答案的EDIT部分,在此我解释如何实现OP的特定需求。
自动单选按钮“存储库”通过使用两个键窗口样式属性WS_GROUP
和WS_TABSTOP来工作。对您的两个“银行”执行以下操作,我将它们分别称为Bank1和Bank2:both WS_GROUP | WS_TABSTOP的控件样式。其余的单选按钮应该是其中的noth
after您最后一个单选按钮应至少具有WS_GROUP样式和WS_GROUP | WS_TABSTOP(如果它是一个制表符停止的控件)。
both
after您最后一个单选按钮应至少具有WS_GROUP样式和WS_GROUP | WS_TABSTOP(如果它是一个制表符停止的控件)。
如果有帮助,请抓住一个素描垫,将其画在纸上,并在制表位上贴上“ T”,并在组属性上贴上“ G”,如上所述。可视化后可能会更加清晰。查看对话框资源脚本,以了解它们如何协同工作以获取更多见解。
注意:如果您想使用围绕它们的分组框,则可以。对话框管理器通过根据使用WS_GROUP标记的最后一个控件将控件与组相关联来进行工作,此后具有WS_TABSTOP的第一个控件被视为该组的跳入点。也可以使用先插入Groupbox(不能为Tabstop),然后插入具有第一个单选按钮的WS_TABSTOP的单选按钮控件(这次没有WS_GROUP)。通常,我发现不依赖组框就可以简单地排列单选按钮。
编辑
图片说出千言万语>为了您的图片,我可能会按以下顺序创建以下子级: