现在的位置: 首页 > 综合 > 正文

VC++ MFC属性页使用说明(孙鑫视频教程总结)(2)

2013年09月02日 ⁄ 综合 ⁄ 共 1432字 ⁄ 字号 评论关闭

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_occupationvalueint

b)         按照上面的办法设置ListBox,其中使用到的数据是:IDC_LIST1,变量是m_workAddr,valueCString

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则不会执行“下一步”

}

抱歉!评论已关闭.