标签式对话框

标签式对话框

ID:40849461

大小:26.96 KB

页数:15页

时间:2019-08-08

标签式对话框_第1页
标签式对话框_第2页
标签式对话框_第3页
标签式对话框_第4页
标签式对话框_第5页
资源描述:

《标签式对话框》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、标签式对话框  在设计较为复杂的对话框时,常常会遇到这种情况:对某一事物的设置或选项需要用到大量的控件,以至于一个对话框放不下,而这些控件描述的是类似的属性,不能分开。用普通的对话框技术,这一问题很难解决。   MFC提供了对标签式对话框的支持,可以很好的解决上述问题。标签式对话框实际上是一个包含了多个子对话框的对话框,这些子对话框通常被称为页(Page)。每次只有一个页是可见的,在对话框的顶端有一行标签,用户通过单击这些标签可切换到不同的页。显然,标签式对话框可以容纳大量的控件。在象Word和DeveloperStudio这样复杂的软件中,用户会接触到较多的标签式对话框,一个典型的标签

2、式对话框如图5.10所示。    图5.10典型的标签式对话框  5.5.1标签式对话框的创建   为了支持标签式对话框,MFC提供了CPropertySheet类和CPropertyPage类。前者代表对话框的框架,后者代表对话框中的某一页。CPropertyPage是CDialog类的派生类,而CPropertySheet是CWnd类的派生类。虽然CPropertySheet不是CDialog类的派生类,但使用CPropertySheet对象的方法与使用CDialog对象是类似的。标签式对话框是一种特殊的对话框,因此,和普通对话框相比,它的设计与实现既有许多相似之处,又有一些不同的特

3、点。   创建一个标签式对话框一般包括以下几个步骤:   分别为各个页创建对话框模板,去掉缺省的OK和Cancel按钮。每页的模板最好具有相同的尺寸,如果尺寸不统一,则框架将根据最大的页来确定标签对话框的大小。在创建模板时,需要在模板属性对话框中指定下列属性:   指定标题(Caption)的内容。标题的内容将显示在该页对应的标签中。   选择TitleBar、Child、ThinBorder和Disable属性。   根据各个页的模板,用ClassWizard分别为每个页创建CPropertyPage类的派生类。这一过程与创建普通对话框类的过程类似,不同的是在创建新类对话框中应在Bas

4、eclass一栏中选择CPropertyPage而不是CDialog。   用ClassWizard为每页加入与控件对应的成员变量,这个过程与为普通对话框类加入成员变量类似。   程序员可直接使用CPropertySheet类,也可以从该类派生一个新类。除非要创建一个非模态对话框,或要在框架对话框中加入控件,否则没有必要派生一个新类。如果直接使用CPropertySheet类,则一个典型的标签式对话框的创建代码如清单5.12所示,该段代码也演示了标签式对话框与外界的数据交换。这些代码通常是放在显示对话框的命令处理函数中。可以看出,对话框框架的创建过程及对话框与外界的数据交换机制与普通对话

5、框是一样的,不同之处是还需将页对象加入到CPropertySheet对象中。如果要创建的是模态对话框,应调用CPropertySheet::DoModal,如果想创建非模态对话框,则应该调用CPropertySheet::Create。   若从CPropertySheet类派生了一个新类,则应该将所有的页对象以成员变量的形式嵌入到派生类中,并在派生类的构造函数中调用CPropertySheet::AddPage函数来把各个页添加到对话框中。这样,在创建标签式对话框时就不用做添加页的工作了。  清单5.12典型的标签式对话框创建代码  voidCMyView::DoModalProper

6、tySheet()  {  CPropertySheetpropsheet;  CMyFirstPagepageFirst;//derivedfromCPropertyPage  CMySecondPagepageSecond;//derivedfromCPropertyPage     //Movememberdatafromtheview(orfromthecurrently  //selectedobjectintheview,forexample).  pageFirst.m_nMember1=m_nMember1;  pageFirst.m_nMember2=m_nMember

7、2;     pageSecond.m_strMember3=m_strMember3;  pageSecond.m_strMember4=m_strMember4;     propsheet.AddPage(&pageFirst);  propsheet.AddPage(&pageSecond);     if(propsheet.DoModal()==IDOK)  {  m_nMember1=pageFirst.m_nMemb

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。