MFC“警告:跳过组中的非单选按钮。”

时间:2008-09-24 23:04:28

标签: visual-studio mfc warnings

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

  

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

据我所知,在MFC中,您可以将单选按钮分组,以指示哪些单选按钮组合在一起。如果我没记错的话,你可以通过将第一个单选按钮的“group”属性设置为true来执行此操作,然后将其余的单选按钮“group”属性设置为false。

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

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

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

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

5 个答案:

答案 0 :(得分:10)

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

  1. ChrisN和Smashery建议我重新排序标签以确保按顺序排列单选按钮,这确实解决了一些警告。

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

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

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

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

答案 1 :(得分:7)

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

对于它的价值,我有3个按正确选项卡顺序排列的单选按钮(在.rc文件中确认,之后没有问题),但仍然收到警告。 DDX_Radio中的断点显示第2个和第3个单选按钮被报告为非单选! 在resource.h中查找,发现使用ID 1313的第一个单选按钮,以及使用1311和1312的另外两个单选按钮。将它们按所需的制表符顺序排列,并对ID重新编号以适合并解决了问题。 猜猜GetWindow GW_HWNDNEXT以某种方式链接为ID顺序而不是Tab顺序,即使单选组工作也是如此。 注意:仍在使用Visual C ++ v6