八宝书库 > 文学其他电子书 > VC语言6.0程序设计从入门到精通 >

第22部分

VC语言6.0程序设计从入门到精通-第22部分

小说: VC语言6.0程序设计从入门到精通 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




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

ClassWizard 对话框。  

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

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

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

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

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

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

 CTestSheet ”类。  

“ 



                                                                    



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



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

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

                Add Member Variable ”菜单项,打开 Add Member Variable 对话框。在“Variable  

鼠标右键,选择“ 

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

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

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

     (5 )最后在属性表类 CTestSheet 的构造函数中将所有属性页添加到属性表中。在 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);  



     }  



 ·86 ·  


…………………………………………………………Page 96……………………………………………………………

                                                                             第 4 章    对话框  



     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 name ” 

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

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

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

“ 

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

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



     void CSample4_1View::OnWizard()    



     {  



         // TODO: Add your mand handler code here  



         //  创建属性表对象  



         CTestSheet sheet(〃〃);  



         //  设置属性对话框为向导对话框  



         sheet。SetWizardMode();  



         //  打开模态向导对话框  



         sheet。DoModal();  



     }  



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

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

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

                              



                                                                    



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



                                                                                      ·87 ·  


…………………………………………………………Page 97……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



4。4。3    一般属性页对话框的创建步骤  



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

对话框的创建步骤。  

    (1)创建属性页模板。  

    (2 )为各个属性页添加属性页类。  

    (3 )创建属性表类。  

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

的 OnSetActive()和 OnWizardFinish()函数。  

    (4 )打开属性页对话框。  

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

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

据 4。4。2 节的第 4 部分,为 Sample4_1 创建 ID 为 ID_PROPERTIES 的“查看|打开一般属性页 

对话框”菜单项,并为之在 CSample4_1View 类中添加消息处理函数 OnProperties() 。添加如 

下代码就可以直接打开一般属性页对话框:  



    void CSample4_1View::OnProperties()    



    {  



        // TODO: Add your mand handler code here  



        //  创建属性表对象  



        CTestSheet sheet(〃〃);  



        //  打开模态一般属性页对话框  



        sheet。DoModal();  



    }  



    技巧:开发大型程序时有可能会创建许多类。这种情况下可以创建目录优化工作区。例如在 



         Sample4_1 中可以将 CTestSheet 及其包含的属性页类 CTestPage1、CTestPage2 和 CTestPage3 



         归在同一个目录下。具体操作为如下:  



         (1)单击在 IDE 左侧工作区窗口的“ClassView ”选项卡。  



         (2 )在“ClassView ”中的 Sample4_1 classes 节点上单击鼠标右键,选择“New Folder ”菜 



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



         (3 )在“New Folder ”对话框中的“Name of the new folder ”输入框中输入 TestSheet,单击 



         “OK ”按钮退出对话框,就可以看到“ClassView ”中的  Sample4_1  classes  节点多了一个 



         TestSheet 的目录。  



         (4 )在“ClassView ”中将 CtestSheet、CTestPage1、CTestPage2 和 CTestPage3 拖至 TestSheet 



          目录就可以完成归类。  



4。5    通用对话框  



    在 Windows 系统中提供了一些通用对话框,如打印设置对话框、页面设置对话框、查找 



 ·88 ·  


…………………………………………………………Page 98……………………………………………………………

                                                         第 4 章    对话框  



对话框、文件对话框、字体对话框和颜色对话框等 。这些是 Windows 系统中出现频率很大的 

对话框,将它们定义为通用对话框可以极大地减轻程序的复杂度 。同时,MFC  已经用类封装 

了这些通用对话框。一般来讲,要使用通用对话框,不需要派生新的类,因为 MFC  提供的 

基类已经提供了常用的功能。而且在对话框结束后,可以通过成员函数得到用户在对话框中 

的选择。 

   本节用一个包含各种通用对话框的例程来分别介绍  Windows               系统提供的通用对话框的 

编程方法。  



   实例 4…5 :创建通用对话框实例。源代码在光盘中“04实例 4…5GridDemo ”目录下。  



   GridDemo,是一个表格编辑器。该表格编辑器提供一个固定大小的自绘表格,用户可以 

新建、打开和保存表格。同时该程序还提供了一些基本的编辑功能,如查找表格中出现的字 

符串、设置表格中文本的字体和颜色 。最后该表格还可以调整打印效果,并在打印机中输出。 

这些功能都是用通用对话框进行设置的。  

   首先介绍一下 GridDemo 的基本框架。GridDemo 是一个单文档应用程序,类和主要成员 

变量的关系如图 4…26 所示。  

   o  CMainFrame :GridDemo 的框架类。  

   o  CGridDemoDocument :GridDemo 的文档类,用于存取文档并更新相应的视图。  

   o  m_CellTextArray :CGridDemoDocument 的成员变量,用于保存表格中的文本,是一个 

     一维的字符串数组,通过行数 m_nRow 和列数 m_nCol 映射到二维的表格中。  

   o  CGridDemoView :GridDemo 的视图类,用于显示和修改表格。表格的每个单元格在 

     CGridDemoView 中以输入框的控件形式出现。这个表格由一个输入框控件数组 

     m_CellArray 组成,并且由这个控件数组进行绘制。  

   o  m_CellArray :CGridDemoView 的成员变量,用于显示和修改表格,是一个一维的 

     CMyEdit 类型数组,数组下标与文档类中的 m_CellTextArray 一致。  

   o  CMyEdit :重载的 CEdit 类,用于更改输入框文字颜色和字体。  



                                                      



                       图 4…26    GridDemo 的组织关系图  



4。5。1    打印设置对话框  



   打印设置对话框如图 4…27 所示,这个对话框提供了 Windows 标准打印设置,包括选择 

打印机、打印范围和打印份数等。这些选项一般在打印输出前进行设置。  



                                                               ·89 ·  


…………………………………………………………Page 99……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



                                                                  



                                图 4…27    打印设置对话框  



    CPrintDialog 封装了打印设置对话框的操作 。在 GridDemo 的 GridDemoView。cpp 文件中, 

CGridDemoView::OnFilePrint()函数用于创建打印设置对话框,步骤如下:  

    (1)创建 CGridDemoView::OnFilePrint()函数。  

    CGridDemoView::OnFilePrint()是 GridDemo 例程视图类“文件|打印”菜单项的消息处理 

函数。在用 IDE  的 AppWizard 创建 SDI 应用程序的过程中,默认创建了“文件|打印”菜单 

项,用户只需要依照第  3  章的讲解,在 CGridDemoView  类中为该菜单项  ON_FILE_PRINT 

添加消息处理函数,就可以创建 CGridDemoView::OnFilePrint()函数。  

    (2 )创建 CPrintDialog 对象。CGridDemoView::OnFilePrint()函数创建 CPrintDialog 对象 

dlg,代码如下:  



    //打开一个打印设置对话框  



    CPrintDialog dlg(FALSE;PD_NOSELECTION|PD_NOPAGENUMS;this);  



    (3 ) 打 开   CPrintDialog 对 话 框 。 这 通 过 调 用     CPrintDialog::DoModal() 函 数 实 现 , 

CGridDemoView::OnFilePrint()函数中的代码如下:  



    if(dlg。DoModal() == IDOK)  



    上面的 if 语句打开打印设置对话框,并判断如果用户是否单击“确定”按钮,如果是, 

DoModal() 函数返回 IDOK ,进行 if 语句块中的打印操作,反之则不进行打印。  

    (4 )将从打印设置对话框获得的打印设备上下文附加到打印输出时使用的设备上下文对 

象。CGridDemoView::OnFilePrint() 中这一步骤具体如下:  



    CDC dc;  



    dc。Attach(dlg。GetPrinterDC());//

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的