Question:
最近在开发中,设计了一个对话框来进行一系列的设定,其中有一组Radio Buttons(单选按钮),但在Debug下,发现对话的弹出有点延迟,经过分析,确定是因为在对话框弹出之前,先TRACE出了一系列的警告,警告的内容就是"Warning: skipping non-radio button in group".
Reason:
经过分析MFC的源代码,发现这个警告的原因是在这组Radio Buttons中的最后一个Radio Button的下一个控件的Group属性为FALSE。在MFC中当我们将一组Radio Buttons一个变量关联起来是通过函数voidDDX_Radio(CDataExchange* pDX, int nIDC, int& value)来实现的,其中参数nIDC指的是第一个Radio Button的ID,输出参数value用来指定选择的是哪个Radio Button。那么这个函数在实现的时候是先从第一个Radio Button按照Tab键的顺序往下找,直到找到下一个Group属性为TRUE的控件,如果在这之间的控件不是Radio Button,这个函数就会Trace出这样的警告。
Solution:
当将一组Radio Buttons和一个变量相关的时候:
1. 设定第一个Radio Buttons的Group属性为TRUE.
2. 设定这组Radio Buttons中最后一个Radio Button的下一个控件(按照Tab键的顺序)属性为TRUE。