本部分需要 查看 我的另一篇:VS2008, MFC 编程 对话框 笔记6 - 属性表单 TAB 页面1 - 点击子菜单 显示建立的属性对话框
1. 在上一篇, 成功的实现了点击 子菜单 PropertyPage 弹出 属性表单对话框,只需要在 建立模态对话框之前加入 设置向导模式就可以,函数为 SetWizardMode();
void Cvs2008_SX_jiaocheng08_1View::OnPropertypage()
{
// TODO: 在此添加命令处理程序代码
CPropSheet propSheet(L"Test Property Page sheet");//构造一个属性表单对象。标题为"Test Property Page sheet"
propSheet.SetWizardMode();//设置向导 出现“下一步”“上一步”按钮
propSheet.DoModal();//调用属性表单的DoModal来显示 一个模态的属性表单
}
2. 但是,在属性表单 第一页和最后一页 还是有上一步和下一步 的按钮,这里使用 重写OnSetActive
3. 重写函数分别为
BOOL CProp1::OnSetActive(void)
{
//因为属性页时增加到属性表单的,所以属性页CPropPage是属性表单的Propsheet的子类
//所以使用GetParent获取父类指针。
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT);//对于第一页只有“下一页”按钮。
return CPropertyPage::OnSetActive();
}
BOOL CProp2::OnSetActive(void)
{
//因为属性页时增加到属性表单的,所以属性页CPropPage是属性表单的Propsheet的子类
//所以使用GetParent获取父类指针。
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT );//对于第二页 是有“上一页”和“下一页”按钮。
return CPropertyPage::OnSetActive();
}
BOOL CProp3::OnSetActive(void)
{
//因为属性页时增加到属性表单的,所以属性页CPropPage是属性表单的Propsheet的子类
//所以使用GetParent获取父类指针。
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);//对于第三页 上一页 和 完成。
return CPropertyPage::OnSetActive();
}
4. 设置 当用户 没有选择 单选项 就不能点击 “下一步”。并提示。
4.1 先把 Radio Button的属性中group 改为true,这样 Radio button:System Engineer 和 project Manager 就和 software Enginner 是一组。因此 给Software Engineer 关联int 变量,当选择Software Engineer 时 变量值为0,当选择Project Manager 变量值就为2. (组的的结尾为遇到下一个为组属性的结束,当Project Manager 设置为组, 那么Software Engineer 和 Systerm Enginner 为一