在Visual Studio的调试器中运行旧的MFC应用程序时,我在Output窗口中看到了很多警告,如下所示:

  

警告:跳过群组中的非单选按钮。

据我所知,在MFC中,您可以将单选按钮分组,以指示哪些单选按钮组合在一起。如果我没记错的话,你可以通过设置“组”来做到这一点。将第一个单选按钮的属性设置为true,然后将剩余的单选按钮设置为“group”。财产到假。

关于这个警告我有三个问题。

  1. 你如何摆脱这个警告?做 你必须设置“组”所有人的财产 非单选按钮控件为true 避免这种情况,或者你应该设置 它是第一次控制之后的 最后一个单选按钮?

  2. 有没有简单的方法来衡量 什么控件或对话有这个问题? 我可以打开每个对话框 直到警告为止 弹出。这个应用程序有很多 对话虽然,所以它会 如果有更简单的方法,那就太好了。

  3. 如果发生什么负面行为 你不解决这个警告?其他 言语,这甚至是否重要?

有帮助吗?

解决方案

警告表示组中第一个和最后一个单选按钮之间的Tab键顺序中有一个单选按钮以外的控件。使用 WS_GROUP 样式集的控件标记组的开头。

要解决此问题,请使用对话框编辑器更改Tab键顺序,并确保所有单选按钮都按顺序编号。另一种方法是在文本编辑器中打开.rc文件并更改每个对话框资源中语句的顺序(Tab键顺序只是按列表控件的顺序定义)。

如果单选按钮分组工作正常,我认为您可以放心地忽略此警告。

其他提示

在这里的回复和旧论坛的一些研究之间,我想我至少想出了如何解决我的问题。以下是我在上述问题中发现的内容。

  1. ChrisN和Smashery建议我重新排序选项卡以确保按顺序排列单选按钮,这确实修复了一些警告。

    此外,单选按钮组之后的Tab键顺序中的第一个控件必须设置WS_GROUP属性(或者在编辑器中将group属性设置为true)。这告诉MFC单选按钮组已结束。没有它在Tab键顺序中的所有剩余控件,直到下一个WS_GROUP将生成警告。完成这两件事之后,这些对话框中的警告就消失了。

  2. 这仍然是一个悬而未决的问题,我没有找到找到这些问题的好方法,无需打开每个对话框并等待警告。

    如果您知道对话框正在创建此警告但您不知道导致它的控件,则可以在生成警告的TRACE()调用的DDX_Radio()函数中设置断点。这可以更容易识别被抱怨的特定控件。

  3. 我同意ChrisN的说法,除了让你仔细检查你的标签顺序之外我想不出任何理由。在其他地方,我找不到任何其他可能引起的问题的参考。

也许检查你的标签顺序(格式/标签顺序) - 听起来你在一组单选按钮的中间有一个普通的按钮。如果这确实是问题所在,您可以使用“格式/选项卡顺序”菜单项,然后以正确的顺序单击控件来解决此问题。

对于第2点,这就是为什么我猜你保持这个没有答案的原因,我无法想象任何简单的事情,然后对带有单选按钮的所有对话框进行文本搜索(* .rc)。对于每个匹配,请目视检查此问题的资源代码并进行更正。我会在资源文件的源代码中手动执行,而不是尝试使用gui设计器。

为了它的价值,我有3个单选按钮,按正确的顺序排列顺序(在.rc文件中确认后没有问题)并且仍然收到警告。 DDX_Radio中的断点显示第二和第三个单选按钮被报告为非收音机! 在resource.h中查找并使用ID 1313和其他两个使用1311和1312发现了第一个单选按钮。将它们放入所需的Tab键顺序并重新编号以适应和解决问题。 猜猜GetWindow GW_HWNDNEXT以ID顺序链接,而不是Tab顺序,即使无线电组工作。 注意:仍然使用Visual C ++ v6

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top