一个主页面有几个页,我用的是继承CPropertyPage的方法,在主页中我用AddPage函数加载各页。其中有一页用到了RadioButton控件,打开软件的时候就要对其初始化,使改控件为选中状态。我首先在改页类的构造函数中加上这么一句话
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);
编译的时候没有错,运行的时候就报错了。
然后我把这句话放在了主页中的OnInitDialog中,结果编译,运行的时候都没有错,但是RadioButton没有被选上。想了一下我用的GetDlgItem函数根本没有和RadioButton所使用的类关联起来。于是我用GetDlgItem另一个重载函数,带句柄的那个。但是返回值是void,就不能强制转换为CButton*类型。后来想了用控件变量关联起来,在RadioButton中增加一个控件变量m_ctrRadio(首先要改RadioButton的属性Group设置为TRUE),然后在主页中的OnInitDialog中添加m_ctrRadio.SetCheck(TRUE);结果还是不得行。
思索很久,在RadioButton使用的页中重载了OnInitDialog函数然后添加了初始化语句,就OK啦……