失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > VS MFC属性页孙鑫笔记

VS MFC属性页孙鑫笔记

时间:2022-10-13 21:16:06

相关推荐

VS MFC属性页孙鑫笔记

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

一 创建单文档程序

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

如果觉得《VS MFC属性页孙鑫笔记》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。