当前位置:松语文学 > 其他类型 >VC++_6.0程序设计从入门到精通最新章节 > VC++_6.0程序设计从入门到精通TXT下载
错误举报

第 21 章

  单“View|ClassWizard”,或者在开发环境的界面下直

  接使用快捷键Ctrl+W,打开“ClassWizard”对话框。同时它会检测到添加了新的对话框资源,

  并打开“Adding a Class”对话框,提示用户是否为新建的对话框添加一个对话框类。

  (2)在“Adding a Class”对话框中,选中“Create a new class”单选框,意思是要为对

  话框资源创建一个新的类,单击“OK”按钮确认后打开“New Class”对话框。

  (3)在“New Class”对话框中,ClassWizard 要为新添加的IDD_TESTPAGE1 模板创建

  枫叶文学网www.fywxw.com

  Visual C++ 6.0 程序设计从入门到精通

  ·84·

  一个新的类。在“Ncom”输入框中输入CTestPage1,在“Base class”下拉列表框中选择

  CPropertyPage,如图4-23 所示。单击“OK”按钮关闭“New Class”对话框,返回“ClassWizard”

  对话框,就可以看见“ClassWizard”对话框中的“Class ncom”下拉列表框中已经自动选择

  了新创建的类CTestPage1。

  图4-23 创建属xìng页类的对话框

  (4)依照4.1.3 第2 到第4 部分的讲解,为CTestPage1 添加合适的控件变量和控件消息

  处理函数。

  (5)为CTestPage1 添加合适的属xìng页消息处理函数。在已经打开的“ClassWizard”对话

  框中,单击“Message Maps”选项卡,在“Class ncom”下拉列表框中选择CTestPage1,在

  “Object IDs”列表框中选择CTestPage1,在“Messages”列表框中选择表4-1 中出现的合适

  的消息处理函数,单击“Add Function”按钮,就可以添加对应的消息处理函数。

  在实例Sample4_1 中,由于CTestPage1 作为向导对话框的第一个属xìng页,因此显示测试

  页1 时向导对话框中只有“下一个”(Next)按钮。这就需要为CTestPage1 添加OnSetActive()

  函数。在“Messages”列表框中选择OnSetActive,单击“Add Function”按钮添加该函数。

  再单击“ Edit Function ” 按钮, 关闭“ ClassWizard ” 对话框, IDE 自动定位到

  CTestPage1::OnSetActive()函数,修改函数代码如下:

  BOOL CTestPage1::OnSetActive()

  {

  // TODO: Add your specialized code here and/or call the base class

  // 获得父窗口,即属xìng表CPropertySheet 类

  CPropertySheet* psheet = (CPropertySheet*) GetParent();

  // 设置属xìng表只有“下一步”按钮

  psheet->SetWizardButtons(PSWIZB_NEXT);

  return CPropertyPage::OnSetActive();

  }

  经过上述步骤,就为属xìng页IDD_TESTPAGE1 添加了对应的属xìng页类CTestPage1。

  枫叶文学网www.fywxw.com

  第4 章 对话框

  ·85·

  3.创建其余的属xìng页和对应的属xìng页类

  为实例Sample4_1 创建其余的属xìng页,包括第二页IDD_TESTPAGE2 和最后一页

  IDD_TESTPAGE3,对应的属xìng页类为CTestPage2 和CTestPage3。步骤如下:

  (1)参照第1 部分,为实例Sample4_1 创建第二个属xìng页模板IDD_TESTPAGE2。

  (2)参照第2 部分,为IDD_TESTPAGE2 创建属xìng页类CTestPage2,为CTestPage2 添加

  合适的控件变量和控件消息处理函数,注意在CTestPage2 中不用添加OnSetActive()消息处理

  函数。

  如果用户想为向导对话框添加更多的中间步骤,可以重复步骤1 和2。

  (3)参照第1 部分,为实例Sample4_1 创建最后一个属xìng页模板IDD_TESTPAGE3。

  (4)参照第2 部分,为IDD_TESTPAGE3 创建属xìng页类CTestPage3,为CTestPage3 添加

  合适的控件变量和控件消息处理函数。注意在CTestPage3 中需要添加OnSetActive()和

  OnWizardFinish()消息处理函数。

  添加CTestPage3::OnSetActive()函数,使得向导对话框进行到最后一页时只有“完成”

  (Finish)按钮。在已经打开的ClassWizard 对话框中,单击“Message Maps”选项卡,在“Class

  ncom”下拉列表框中选择CTestPage1,在“Object IDs”列表框中选择CTestPage3,在“Messages”

  列表框中选择OnSetActive,单击“Add Function”按钮添加该函数。再单击“Edit Function”

  按钮,关闭“ClassWizard”对话框,IDE 自动定位到CTestPage3::OnSetActive()函数,修改函

  数代码如下:

  BOOL CTestPage3::OnSetActive()

  {

  // TODO: Add your specialized code here and/or call the base class

  CPropertySheet* psheet = (CPropertySheet*) GetParent();

  //设置属xìng表只有“完成”按钮

  psheet->SetFinishText("完成");

  return CPropertyPage::OnSetActive();

  }

  重复前面的过程, 在“ Messages ” 列表框中选择OnWizardFinish , 添加

  CTestPage3::OnWizardFinish()函数,使得完成向导对话框时提示用户,添加的函数代码如下:

  BOOL CTestPage3::OnWizardFinish()

  {

  // TODO: Add your specialized code here and/or call the base class

  MessageBox("您已经完成向导!");

  return CPropertyPage::OnWizardFinish();

  }

  这样就完成了向导对话框的所有属xìng页模板和相应属xìng页类的创建。

  4.创建属xìng表类

  创建完向导对话框的所有属xìng页类后,就可以为实例Sample4_1添加属xìng表CPropertySheet

  枫叶文学网www.fywxw.com

  Visual C++ 6.0 程序设计从入门到精通

  ·86·

  类的派生类,用于cāo作向导对话框。其步骤如下:

  (1)在IDE 的主菜单中选择“View| ClassWizard”菜单命令,或按快捷键Ctrl+W 打开

  ClassWizard 对话框。

  (2)在“ClassWizard”对话框中,单击“Add Class”按钮,在弹出的下拉菜单中选择“New”

  菜单项,打开“New Class”对话框。

  (3)在“NewClass”对话框中创建名为CTestSheet 的属xìng表派生类。在“Class type”下

  拉列表框中选择MFC Class,在“Ncom”输入框中输入CTestSheet,在“Base class”下拉列

  表框中选择CPropertySheet,如图4-24 所示。单击“OK”按钮退出“New Class”对话框,

  返回“ClassWizard”对话框,可以看到“Class ncom”下拉列表框中已经选择了新创建的

  “CTestSheet”类。

  图4-24 添加CProperySheet 类的派生类

  (4)为CTestSheet 类添加每个属xìng页类的成员变量。关闭“ClassWizard”对话框,在IDE

  左侧工作区中单击“ClassView”选项卡,展开Sample4_1 classes 节点,在CTestSheet 上单击

  鼠标右键,选择“Add Member Variable”菜单项,打开Add Member Variable 对话框。在“Variable

  Type”输入框中输入CTestPage1,在“Variable Ncom”输入框中输入m_page1,单击“OK”

  按钮就可以为CTestSheet 类添加第一个属xìng页类CTestPage1 的m_page1 成员变量。重复这一

  过程,为CTestSheet 添加成员变量CTestPage2 类的m_page2 和CTestPage3 类的m_page3。

  (5)最后在属xìng表类CTestSheet 的构造函数中将所有属xìng页添加到属xìng表中。在IDE 左

  侧工作区中单击“ClassView”选项卡,展开Sample4_1 classes|CTestSheet 节点,双击

  “CTestSheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0)”,即可

  编辑CTestSheet 的构造函数,修改函数代码如下:

  CTestSheet::CTestSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)

  :CPropertySheet(pszCaption, pParentWnd, iSelectPage)

  {

  AddPage(&m_page1);

  AddPage(&m_page2);

  AddPage(&m_page3);

  }

  枫叶文学网www.fywxw.com

  第4 章 对话框

  ·87·

  5.打开向导对话框

  在实例Sample4_1 中添加一个菜单项打开前面创建的向导对话框,步骤如下:

  (1)首先创建打开向导对话框的菜单项。

  单击IDE 左侧工作区的“ResourceView”标签,展开Menu 节点,双击IDR_SAMPLETYPE,

  打开“IDR_SAMPLETYPE”菜单资源编辑界面。在IDE 右侧客户区展开顶层“查看”菜单,

  双击虚线框,打开添加一个新的菜单项的对话框。在“ID”输入框中输入ID_WIZARD,在

  “Caption”输入框中输入“打开向导对话框”,回车确认修改。

  (2)为新建的菜单项添加消息处理函数。

  在IDE 主菜单栏中依次选择菜单“View|ClassWizard”,或者在开发环境的界面中直接使

  用快捷键Ctrl+W,打开“ClassWizard”对话框。单击“Message Maps”选项卡,在“Class ncom”

  下拉列表框中选择“CSample4_1View”,在“Object IDs”列表框中选择ID_WIZARD,在

  “Messages”列表框中选择COMMAND,单击“Add Function”按钮,在弹出的对话框中单击

  “OK”按钮,就创建了名为OnWizard 的菜单项消息处理函数。

  ( 3 ) 单击“ Edit Function ” 按钮, 关闭“ ClassWizard ” 对话框, IDE 定位到

  CSample4_1View::OnWizard()函数,编辑CSample4_1View::OnModalless()函数,代码如下:

  void CSample4_1View::OnWizard()

  {

  // TODO: Add your command handler code here

  // 创建属xìng表对象

  CTestSheet sheet("");

  // 设置属xìng对话框为向导对话框

  sheet.SetWizardMode();

  // 打开模态向导对话框

  sheet.DoModal();

  }

  至此,创建向导对话框的所有步骤已经完成,编译运行Sample4_1,选择菜单“查看|打

  开向导对话框”,就可以打开创建的向导对话框,图4-25 所示为在向导对话框最后一步单击

  “完成”按钮后的运行结果。

  图4-25 向导对话框的最后一步

  枫叶文学网www.fywxw.com

  Visual C++ 6.0 程序设计从入门到精通

  ·88·

  4.4.3 一般属xìng页对话框的创建步骤

  一般属xìng页对话框提供了选项卡的功能,为属xìng进行合理的分类。本节将介绍这类属xìng

  对话框的创建步骤。

  (1)创建属xìng页模板。

  (2)为各个属xìng页添加属xìng页类。

  (3)创建属xìng表类。

  以上3 个步骤都与向导对话框的创建步骤相同。惟一的区别是不用添加4.4.2 节中提到

  的OnSetActive()和OnWizardFinish()函数。

  (4)打开属xìng页对话框。

  打开一般属xìng对话框与打开向导对话框的方法类似,只需要把打开前的SetWizardMode()

  函数去掉即可。例如在Sample4_1 中打开一个为CTestSheet 类的一般属xìng页对话框,首

  松语文学免费小说阅读_www.16sy.com