VS2015 MFC属性页<孙鑫笔记>

本文介绍如何使用MFC创建属性页表单及向导对话框,包括创建对话框、类集成、按钮设置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

一 创建单文档程序

二 切换到资源视图通过右键添加资源,添加三个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()虚函数....

 

转载于:https://www.cnblogs.com/zhou8744/p/10600080.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值