按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
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());//把打印设备上下文附加到 DC 对象
(5 )进行打印的具体过程,本章不涉及这类内容,故略过,用户可以参考第 14 章。
(6 )结束打印。CGridDemoView::OnFilePrint() 中的对应代码如下:
//结束打印
DeleteDC(dc。Detach());
4。5。2 页面设置对话框
页面设置对话框如图 4…28 所示,提供了 Windows 打印页面设置的标准功能,包括选择
纸张、打印方向和页边距等。CpageSetupDialog 类中封装了页面设置对话框。
下面演示 GridDemo 例程如何使用页面设置对话框进行页边距的设置:m_rectMargin 保
·90 ·
…………………………………………………………Page 100……………………………………………………………
第 4 章 对话框
存在 CGridDemoView 的成员变量中,为 CGridDemoView::OnFilePrint() 的打印代码设置页边
距。相关代码在 GridDemoView。cpp 文件的 CGridDemoView::OnFilePrintSetup()函数中,具体
如下:
(1)创建 CGridDemoView::OnFilePrintSetup()函数。
CGridDemoView::OnFilePrintSetup()函数在 GridDemo 例程中是“文件|页面设置”菜单项
的消息响应函数,对应 ID 为 ID_FILE_PRINT_SETUP 。由 IDE 的 AppWizard 默认创建的 SDI
应用程序中,ID_FILE_PRINT_SETUP 对应的菜单项是“文件|打印设置”,只需要将菜单项
的标题更改为“页面设置”即可与 GridDemo 例程一致。用户只要依照第 3 章的讲解,在
CGridDemoView 类中为该菜单项 ON_FILE_PRINT_SETUP 添加消息处理函数,就可以创建
CGridDemoView::OnFilePrintSetup()函数。
图 4…28 页面设置对话框
(2 )创建页面设置对话框对象,并设置初始值。这部分功能在CGridDemoView::OnFilePrintSetup()
函数的开头实现,代码如下:
//打开一个页面设置对话框,用于设置打印区域,以毫米为单位
CPageSetupDialog dlg;
//初始化页边空白区域
dlg。m_psd。rtMargin=m_rectMargin;
(3 )打开页面设置对话框,保存程序用户设置的页面空白区域。这部分功能的实现代码
在 CGridDemoV