11、 针对OnSheet(),编写代码
a) 我们首先需要将sheet显示出来(这时候的sheet已经拥有了属性页)。
CPropSheet sheet("职业选择");//构造一个sheet
sheet.SetWizardMode();//设置成“下一步模式”否则是标签页形式
sheet.DoModal();//以模态形式显示sheet
12、 此时我们发现已经每个属性页都有了“上一步”、“下一步”、“取消”这三个按钮。但是在第一个属性页中显示“上一步”和在第三个属性页中显示“下一步”是错误的,接下来我们要处理这个问题
a) 在”CProp1”这个类上面右键选择add Virtual Function这项,选中里面的OnSetActive,编辑代码:在里面:
这里面用到了SetWizardButtons这个函数,但是msdn上面的说明是这个函数只能用CPropertySheet来调用,所以我们使用GetParent()这个函数获取CPropertySheet的一个指针,适用指针来操作SetWizardButtons这个函数。
((CPropertySheet*)this->GetParent())->SetWizardButtons(PSWIZB_NEXT);
b) 同样我们修改第二、三个属性页:
((CPropertySheet*)this->GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);
((CPropertySheet*)this->GetParent())->SetWizardButtons(PSWIZB_FINISH);
13、 设置第一个属性页“职位”项的数据和页面数据校验。
a) 把RadioButton的“group”属性,然后右键选择class wizard选择Member Variables
在看到的是IDC_RADIO1,点右边按钮“Add Variable”,依次设置为m_occupation、value、int;
b) 按照上面的办法设置ListBox,其中使用到的数据是:IDC_LIST1,变量是m_workAddr,value、CString;
c) 设置RadioButton组的校验:
i. 当我们在点击“下一步”这个按钮的时候触发一个函数“OnWizardNext()”,这个函数的添加方法和12 a)的方式一样;
ii. 接下来首先更新数据this->UpdateData();使得m_occpution获取值;
iii. 判断接受到的值m_occupation, 如果一组RadioButton有被选中的项的话,返回被选中的项的索引,这个索引从0开始计数;如果没有选择的话返回-1;
If(m_occupation==-1)
{
MessageBox(“请选择职位!”);
return -1;//如果返回-1则不会执行“下一步”
}