首页 > 编程语言 > 详细

VS2015 MFC属性页<孙鑫笔记>

时间:2019-03-26 15:01:49      阅读:260      评论:0      收藏:0      [点我收藏+]

/************************创建属性页表单*********************************************/

一 创建单文档程序

二 切换到资源视图通过右键添加资源,添加三个DIALOG对话框,DIALOG选择 IDD_PROPPAGE_LARGE。修改ID:IDD_PROP1,IDD_PROP2,IDD_PROP3。为每个对话框增加设计所需控件

三 为资源IDD_PROP1,IDD_PROP2,IDD_PROP3增加对应的MFC类:CProp1,CProp2,CProp3,它们都继承自CPropertyPage

四 创建一个集成CProp1,CProp2,CProp3属性页的属性表单类CpropSheet,它继承自CPropertySheet,为它增加三个public 类型为CProp1,CProp2,CProp3,变量为:m_prop1,m_prop2,m_prop3三个成员变量。

     在CpropSheet的构造函数里通过调用成员函数AddPage(&m_prop1);AddPage(&m_prop2);AddPage(&m_prop3);

五 使用CpropSheet对象的DoModal()函数来显示属性页。至此出现的页面自动带有三个CButton类型的按钮,确定、取消、应用

 

/*************************创建向导对话框*******************************************/

步骤同属性表单。不同之处在于调用DoModal()之前,通过CPropertySheet对象调用成员函数:SetWizardMode();

    CPropSheet propSheet(L"属性表单A"); //打开页面后的标题
    propSheet.SetWizardMode();
    propSheet.DoModal();
    //备注 calss CPropSheet : public CPropertySheet 

此出现的页面自动带有三个CButton类型的按钮,上一步、下一步、取消。三个页面都有,但是对于第一个页面,它不应该用到上一步,最后一个页面不能再有下一步了。既然这三个按钮都是CPorpertySheet的,查看MSDN,通过SetWizardButtons(DWORD dFlags)方法设置所需按钮。

dFlags:PSWIZB_BACK、PSWIZB_NEXT、PSWIZB_FINISH、PSWIZB_DISABLEDFINISH

要设置按钮,需要在属性页CPropertyPage中的OnSetActive()中进行修改。由于CPropertyPage是属于CPropertySheet的一个页面,因此他们之间存在父子关系。因此Page中,可以调用GetParent()获取父指针CWnd类型的,而我们需要操作的是CPropertySheet类型的,因此需要进行转换。

 

BOOL CProp1::OnSetActive()
{
    //对于第一个页面,它只有下一步
    ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT); 
    //当激活这个页面的时候,同样显示 “上一步” “下一步”“取消”
    //不同的是,“上一步”按钮灰色不可用

    return CPropertyPage::OnSetActive();
}
BOOL CProp2::OnSetActive()
{
// 中间页面有上一步,和下一步按钮
    ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);
    return CPropertyPage::OnSetActive();
}
BOOL CProp3::OnSetActive()
{
    // 最后一个有上一步和完成按钮
    ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
    return CPropertyPage::OnSetActive();
}

单击下一步按钮:在CProp1,CProp2增加OnWizardNext()虚函数....

 

VS2015 MFC属性页<孙鑫笔记>

原文:https://www.cnblogs.com/zhou8744/p/10600080.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!