VS2010/MFC之加法计算器(四)添加属性页
1、创建属性页对话框资源
在“Resource View”的Dialog”节点上点右键,然后在右键菜单中选择“Insert Dialog”创建三个对话框模板,分别对应被加数,加数,和。
删除对话框里面的“OK”和“Cancel”按钮。

2、被加数,加数,和框的ID设置为IDD_SUMMAND_PAGE 、 IDD_ADDEND_PAGE 、 IDD_ADD_PAGE ,对应Caption为“被加数页”“加数”“计算页”。
Style属性在下拉列表中都选择“Child”,Border属性在下拉列表中都选择“Thin”。

3、在IDD_SUMMAND_PAGE对话框模板上点右键,在右键菜单中选择“Add Class”,弹出类向导对话框,在“Class name”编辑框中输入类名“CSummandPage”,与之前不同的是,因为属性页类都应继承于CPropertyPage类,所以要修改下面“Base class”的选项,在下拉列表中选择“CPropertyPage”。


4、在“Class View”中找到“CSummandPage”节点,然后VS2010右侧面板上的属性列表,属性列表的工具栏上有个tip信息为“Overrides”的按钮,按下它,找到“OnSetActive”,点其右侧空白列表项出现向下箭头,再“<Add>OnSetActive”


5、在OnSetActive函数体中添加如下代码实现添加“下一步”按钮的效果
// 获得父窗口,即属性表CPropertySheet类
CPropertySheet* psheet = (CPropertySheet*) GetParent();
// 设置属性表只有“下一步”按钮
psheet->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();

6、CAddendPage框的属性页不需要重载OnSetActive函数。CAddPage需要重载OnSetActive函数设置“完成”按钮。重载后的OnSetActive代码如下:
// 获得父窗口,即属性表CPropertySheet类
CPropertySheet* psheet = (CPropertySheet*) GetParent();
//设置属性表只有“完成”按钮
psheet->SetFinishText(_T("完成"));
return CPropertyPage::OnSetActive();

1、在Solution Explorer视图中的根节点“Addition”上点右键,在右键菜单中选择Add->Class,弹出“Add Class”对话框,然后在中间区域中选择“MFC Class”,点“Add”按钮,弹出另一个类向导对话框,设置Class name为CAddSheet,Base class选择“CPropertySheet”,点“Finish”



2、在新生成的AddSheet.h中包含三个属性页类的头文件:
#include "SummandPage.h"
#include "AddendPage.h"
#include "AddPage.h"
3、在AddSheet.h中添加private变量:
CSummandPage m_summandPage;
CAddendPage m_addendPage;
CAddPage m_addPage;

4、在AddSheet.cpp文件中修改CAddSheet的两个构造函数为:
CAddSheet::CAddSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
// 添加三个属性页到属性表
AddPage(&m_summandPage);
AddPage(&m_addendPage);
AddPage(&m_addPage);
}

5、CAddSheet::CAddSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
49
:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
// 添加三个属性页到属性表
AddPage(&m_summandPage);
AddPage(&m_addendPage);
AddPage(&m_addPage);
}

1、在加法计算器对话框上添加一个按钮,点击它就打开向导对话框。此按钮的ID设为IDC_INSTRUCT_BUTTON,Caption属性设为“使用说明”。

2、双击进入,在AdditionDlg.cpp文件中包含CAddSheet的头文件:#include "AddSheet.h"

3、修改OnBnClickedInstructButton函数如下:
C++代码
void CAdditionDlg::OnBnClickedInstructButton()
{
// TODO: Add your control notification handler code here
// 创建属性表对象
CAddSheet sheet(_T(""));
// 设置属性对话框为向导对话框
sheet.SetWizardMode();
// 打开模态向导对话框
sheet.DoModal();
}

4、最后运行
