码迷,mamicode.com
首页 > 其他好文 > 详细

怎样使用CPropertyPage类和CPropertySheet类创建属性表

时间:2016-04-26 21:52:43      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

CPropertyPage类是属性页类,相当于每一个类就是一个对话框.它继承自CDialog类.

CPropertySheet类是属性表类,它有多个属性页.它继承自CWnd类

创建属性表步骤如下:
这里简单的以只有两个属性页的属性表为例子.

1.创建一个主对话框.
如图:
技术分享

2.在资源中创建一个菜单
如图:
技术分享

3.给菜单添加事件处理程序
如图:
技术分享

4.在主对话框属性中添加菜单
如图:
技术分享

5.添加两个对话框作为属性页
如图:
技术分享
技术分享

需要注意的是,对话框外框最好设置为thin(MSDN说的),不过我测试的时候感觉看不出什么问题…
还有对话框标题就是属性页的标题,下面会有截图,继续往下看就行.

6.分别给两个对话框(属性页)添加类
需要特别注意! 基类的选择必须是CPropertyPage.
如图:
技术分享
技术分享

7.添加一个自己的属性表类
特别注意的是,这个类要继承自CPropertySheet
这里添加的类不是简单的C++类,而是MFC类!
如图:
技术分享
技术分享

8.在CMyPropertySheet头文件中添加两个属性页变量
如图:
技术分享

9.在CMyPropertySheet两个构造函数中向属性表中添加两个属性页
如图:
技术分享

10.到了这一步,属性表已经创建出来了,让我们去打开看看效果如何.
我们是通过菜单方式打开一个属性表.所以要在菜单事件处理那里填写代码.

代码如下:

void CMFCCPropertySheetDlg::OnProperty()
{

    //第一个参数是属性表的标题
    CMyPropertySheet mypsheet(TEXT("属性表"));
    //打开模态对话框,就是属性表
    mypsheet.DoModal();
}

效果如图:
技术分享

上面的”确定” “取消” “应用” “帮助”按钮都是自动生成的,基类都已经实现好了它们的代码.但是”应用”按钮需要自己编写相应的事件处理,下面会有讲到方法.

11.接下就是在各自的属性页中实现控件的功能.
点击属性页1按钮就弹出一个消息框.

如图:
技术分享

技术分享

12.使应用按钮有效.
可以在改变了属性页里面的内容的时候使其有效.
方法如下:
添加单选按钮事件处理
代码如下:

void CPage1::OnBnClickedRadio1()
{
    SetModified(TRUE);
    //其它代码
    //......
}

为了方便,多个按钮响应同一个消息

ON_BN_CLICKED(IDC_RADIO1, &CPage1::OnBnClickedRadio1)
    ON_BN_CLICKED(IDC_RADIO2, &CPage1::OnBnClickedRadio1)
    ON_BN_CLICKED(IDC_RADIO3, &CPage1::OnBnClickedRadio1)

13.响应应用按钮消息
CPropertyPage类中有一个OnApply函数.它的ID是ID_APPLY_NOW,消息映射的时候,这个ID不能变,函数名可以自己再起一个.

首先先进行消息映射

ON_BN_CLICKED(ID_APPLY_NOW, CMyPropertySheet::OnApply)

然后在头文件中声明

afx_msg void OnApply();

最后写函数体实现

void CMyPropertySheet::OnApply()
{
    AfxMessageBox(TEXT("点击了应用按钮"));
    m_Page1.SetModified(FALSE); //使应用按钮无效
    m_Page2.SetModified(FALSE);
    //按下应用的时候更新页面的数据
    GetActivePage()->UpdateData(TRUE);
    //接下来可以SendMessage给其它函数来执行更新后的操作
}

怎样使用CPropertyPage类和CPropertySheet类创建属性表

标签:

原文地址:http://blog.csdn.net/qq_18297675/article/details/51229028

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!