在Visual Studio的调试器中运行旧的MFC应用程序时,我在"输出"窗口中看到了很多警告,如下所示:
警告:跳过组中的非单选按钮.
据我所知,在MFC中,您可以将单选按钮分组,以指示哪些单选按钮组合在一起.如果我没记错的话,你可以通过将第一个单选按钮的"group"属性设置为true来执行此操作,然后将其余的单选按钮"group"属性设置为false.
关于这个警告,我有三个问题.
你怎么摆脱这个警告?您是否必须将所有非单选按钮控件的"group"属性设置为true以避免这种情况,或者您是否应该将其设置为最后一个单选按钮后的第一个控件?
有没有一种简单的方法来确定哪些控件或对话框有这个问题?我可以打开每个对话框,然后摆弄它,直到弹出警告.这个应用程序有很多对话框,所以如果有一个更简单的方法会很好.
如果您不修复此警告,可能会出现什么负面行为?换句话说,这甚至不重要吗?
ryan_s.. 11
在这里的回复和旧论坛的一些研究之间,我想我至少想出了如何解决我的问题.以下是我在上述问题中发现的内容.
ChrisN和Smashery建议我重新排序选项卡以确保按顺序排列单选按钮,这确实解决了一些警告.
此外,单选按钮组之后的Tab键顺序中的第一个控件必须设置WS_GROUP属性(或者在编辑器中将group属性设置为true).这告诉MFC单选按钮组已结束.没有它在Tab键顺序中的所有剩余控件,直到下一个WS_GROUP将生成警告.完成这两件事之后,这些对话框中的警告消失了.
这仍然是一个悬而未决的问题,我找不到找到这些问题的好方法,无需打开每个对话框并等待警告.
如果您知道对话框正在创建此警告但您不知道导致它的控件,则可以在生成警告的TRACE()调用的DDX_Radio()函数中设置断点.这可以更容易地识别被抱怨的特定控件.
我同意ChrisN的意见,除了让你仔细检查你的Tab键顺序之外,我想不出这个警告的任何理由.在其他地方,我找不到任何其他可能引起的问题的参考.
ChrisN.. 7
警告意味着除了组中第一个和最后一个单选按钮之间的Tab键顺序中的单选按钮之外还有一些控制.具有WS_GROUP
样式集的控件标记组的开始.
要解决此问题,请使用对话框编辑器更改Tab键顺序,并确保所有单选按钮按顺序编号.另一种方法是在文本编辑器中打开.rc文件并更改每个对话框资源中语句的顺序(Tab键顺序只是按列表控件的顺序定义).
我认为如果单选按钮分组工作正常,您可以放心地忽略此警告.
在这里的回复和旧论坛的一些研究之间,我想我至少想出了如何解决我的问题.以下是我在上述问题中发现的内容.
ChrisN和Smashery建议我重新排序选项卡以确保按顺序排列单选按钮,这确实解决了一些警告.
此外,单选按钮组之后的Tab键顺序中的第一个控件必须设置WS_GROUP属性(或者在编辑器中将group属性设置为true).这告诉MFC单选按钮组已结束.没有它在Tab键顺序中的所有剩余控件,直到下一个WS_GROUP将生成警告.完成这两件事之后,这些对话框中的警告消失了.
这仍然是一个悬而未决的问题,我找不到找到这些问题的好方法,无需打开每个对话框并等待警告.
如果您知道对话框正在创建此警告但您不知道导致它的控件,则可以在生成警告的TRACE()调用的DDX_Radio()函数中设置断点.这可以更容易地识别被抱怨的特定控件.
我同意ChrisN的意见,除了让你仔细检查你的Tab键顺序之外,我想不出这个警告的任何理由.在其他地方,我找不到任何其他可能引起的问题的参考.
警告意味着除了组中第一个和最后一个单选按钮之间的Tab键顺序中的单选按钮之外还有一些控制.具有WS_GROUP
样式集的控件标记组的开始.
要解决此问题,请使用对话框编辑器更改Tab键顺序,并确保所有单选按钮按顺序编号.另一种方法是在文本编辑器中打开.rc文件并更改每个对话框资源中语句的顺序(Tab键顺序只是按列表控件的顺序定义).
我认为如果单选按钮分组工作正常,您可以放心地忽略此警告.