C++及Windows程序设计A:属性页对话框示例_第1页
C++及Windows程序设计A:属性页对话框示例_第2页
C++及Windows程序设计A:属性页对话框示例_第3页
C++及Windows程序设计A:属性页对话框示例_第4页
C++及Windows程序设计A:属性页对话框示例_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、属性表实现设计的类属性表类CPropertySheet是一个容器,其内放置若干个属性页属性页类CPropertyPage属性表包含多个属性页,每个属性页与一个对话框资源关联要实现属性表,先构造属性表类对象,然后将多个属性页对象加入其中,最后显示属性表对象窗口(如DoModal)4 属性表属性表实现:任务4 属性表属性表实现:创建第一个对话框创建第一页资源对话框IDD_PAGE1DLG4 属性表设置对话框一的属性创建第一页资源对话框IDD_PAGE1DLG设置对话框属性:取消System menu选项,Style选择Child,Border选择ThinIDC_RED,选中Group属性,关联成员

2、变量 int m_color;IDC_GREENIDC_BLUE4 属性表创建第二个对话框创建第二页资源对话框IDD_PAGE2DLG4 属性表设置对话框二属性创建第二页资源对话框IDD_PAGE2DLG设置对话框属性:取消System menu选项,Style选择Child,Border选择ThinIDC_RADIUS,关联成员变量 int m_radius;4 属性表创建第三个对话框创建第三页资源对话框IDD_PAGE3DLG4 属性表设置对话框三属性创建第三页资源对话框IDD_PAGE3DLG设置对话框属性:取消System menu选项,Style选择Child,Border选择Thi

3、nIDC_XCORD,关联成员变量int m_xcord;IDC_YCORD,关联成员变量int m_ycord;4 属性表创建3个对话框的对话框类创建各页资源的页对话框类双击页1对话框资源:类名设置CPage1,基类选择CPropertyPage页2:CPage2页3:CPage3更改默认的文件位置,头文件为Page.h,实现文件为Page.cpp,在引用时不必包含许多头文件4 属性表为3个对话框关联类4 属性表基类不能选择CDialog点击后更改默认的文件派生自己的属性表类派生属性表类使用ClassWizard的Add Class按钮,添加对话框类类名设置为CPropSheet,基类设置为

4、CPropertySheet4 属性表为属性表类添加数据成员为CPropSheet类添加成员变量#include “page.h”class CPropSheet:public CPropertySheetpublic:CPage1 m_page1;CPage2 m_page2;CPage3 m_page3; 4 属性表对应三个属性页类对象实现属性表类构造函数为CPropSheet类实现构造函数CPropSheet:CPropSheet():CPropertySheet()AddPage(&m_page1);AddPage(&m_page2);AddPage(&m_page3);4 属性表将3

5、个属性页加入属性表内定义视图类成员保存数据在视图类中调用对话框添加数据成员class CPropertyView : public CViewpublic:int m_color;int m_radius;int m_xcord;int m_ycord;4 属性表存储将来在对话框中输入的数据初始化数据成员在视图类中调用对话框初始化数据成员CPropertyView:CPropertyView()m_color=0;m_radius=100;m_xcord=100;m_ycord=100;4 属性表调用对话框在视图类中调用对话框映射菜单命令消息void CPropertyView:OnCalld

6、lg() CPropSheet dlg(Wizard example,this,0);dlg.m_page1.m_color=m_color;dlg.m_page2.m_radius=m_radius;dlg.m_page3.m_xcord=m_xcord;dlg.m_page3.m_ycord=m_ycord;4 属性表属性页标题栏 父窗口指针 起始页号调用对话框void CPropertyView:OnCalldlg() if(dlg.DoModal()=IDOK) m_color=dlg.m_page1.m_color; m_radius=dlg.m_page2.m_radius; m_

7、xcord=dlg.m_page3.m_xcord; m_ycord=dlg.m_page3.m_ycord; Invalidate(); 4 属性表接收对话框中输入的数据根据参数绘制屏幕void CPropertyView:OnDraw(CDC* pDC)COLORREF rfcolor;switch(m_color) case 0: rfcolor=RGB(255,0,0); break; case 1: rfcolor=RGB(0,255,0); break; case 2: rfcolor=RGB(0,0,255); break; default: rfcolor=RGB(0,0,0)

8、; break;4 属性表绘制屏幕void CPropertyView:OnDraw(CDC* pDC)CPen pen(PS_SOLID,2,rfcolor);CPen *pOldPen=pDC-SelectObject (&pen);pDC-Ellipse( m_xcord-m_radius,m_ycord-m_radius,m_xcord+m_radius,m_ycord+m_radius);pDC-SelectObject (pOldPen);4 属性表向导的任务5 向导的实现以创建的属性表为基础构造函数中设置向导模式CPropSheet:CPropSheet()AddPage(&m_

9、page1);AddPage(&m_page2);AddPage(&m_page3);SetWizardMode();5 向导的实现设置向导显示模式调用对话框void CPropertyView:OnCalldlg() CPropSheet dlg(Wizard example,this,0);if(dlg.DoModal()=ID_WIZFINISH) m_color=dlg.m_page1.m_color; m_radius=dlg.m_page2.m_radius; m_xcord=dlg.m_page3.m_xcord; m_ycord=dlg.m_page3.m_ycord; Inv

10、alidate();5 向导的实现用户点击“完成”并不返回IDOK进一步扩展重载各属性页类的虚成员函数,完成初始化设置,控制按钮状态OnSetActive:显示该页时调用OnWizardBack、OnWizardNext、OnWizardFinish:用户点击上一步、下一步、完成时调用5 向导的实现设置第一页按钮状态BOOL CPage1:OnSetActive() CPropSheet *parent= (CPropSheet *)GetParent();parent-SetWizardButtons(PSWIZB_NEXT);return CPropertyPage:OnSetActive(); /PSWIZB_BACK、PSWIZB_FINISH、/PSWIZB_DISABLEDFINISH5 向导的实现得到指向属性页的指针设置下一步按钮可用设置第二页按钮状态BOOL CPage2:OnSetActive() CPropSheet *parent=(CPropSheet *)GetParent();parent-SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);return CPropertyPage:OnSetActive();5 向导的实现设置上一步和下一步均可用设置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论