具体描述
内容简介
本书是针对利用BorlandC++4.0、4.5或更高版本进行C++Windows程序设计的人员编写的,全面系统
地介绍了利用BorlandC++ObjectWindows进行Windows程序设计。主要内容包括:利用C十+和ObjectWin-
dows编写Windows应用程序原理、程序设计技术(包括GCI图形操作、文本处理、菜单、对话框、键盘输入、加速键
和鼠标设计)、ObjectWindows类库的类、解释类的数据成员、函数成员、所在的头文件、消息响应表、事件处理程序、
调度函数等。附录给出了从ObjectWindows1.0移植到ObjectWindows2.0的方法。书中的程序设计技术也适用于
Windows95和WindowsNT。本书适合于所有使用C++编写Windows应用程序的读者。
作者简介
目录信息
前言
第一章 ObjectWindows综述
1.1了解类的层次结构
1.1.1使用类
1.1.2继承成员
1.1.3成员函数类型
1.2对象的拓扑构造函数
1.2.1窗口类
1.2.2对话框类
1.2.3控制类
1.2.4图形类
1.2.5打印类
1.2.6模块和应用程序类
1.2.7文档/视图类
1.2.8其他杂类
第二章 学用ObjectWindows
2.1开始
2.1.1学习中的文件
2.2步骤1:基本应用程序
2.2.1哪里去找更多的信息
2.3步骤2:处理窗口事件
2.3.1增加一个窗口类
2.3.2添加一个响应表
2.3.3事件处理函数
2.3.4被封装的API调用
2.3.5重写CanClose函数
2.3.6把TMyWind0w当作主窗
2.3.7哪里获得更多信息
2.4步骤3:在窗口内写
2.4.1构造一个设备场境
2.4.2设备场境下的显示
2.4.3清除窗口
2.4.4哪里查找更多信息
2.5步骤4:窗内作图
2.5.1添加新事件
2.5.2添加一个TClientDC 指针
2.5.3哪里查找更多信息
2.6步骤5:改变线的粗细
2.6.1添加一个画刷
2.6.2改变画刷尺寸
2.6.3调用SetPenSize
2.6.4画刷的清除
2.6.5哪里查找更多的信息
2.7步骤6:画窗和添加菜单
2.7.1重绘窗口
2.7.2菜单命令
2.8步骤7:使用通用对话框
2.8.1改变TMyWindoW
2.8.2改善CanClose
2.8.3CmFileSave函数
2.8.4CmFileOpen函数
2.8.5CmFileSaveAs函数
2.8.6打开和存图
2.8.7CmAbout函数
2.8.8哪里查找更多信息
2.9步骤8:增加多条线
2.9.1TLine类
2.9.2TLines数组
2.9.3插入和提取TLine对象
2.9.4扩展TMyWindow
2.9.5何处获取更多信息
2.10第9步:改变笔
2.10.1TLine类的改变
2.10.2TMyWindow类的改动
2.10.3何处获取更多信息
2.11步骤10:添加修饰
2.11.1改变主窗口
2.11.2创建状态条
2.11.3创建控制条
2.11.4在修饰框中插入对象
2.11.5何处获取更多信息
2.12步骤11:转向Doc/View模型
2.12.1组织应用程序的源程序
2.12.2Doc/View模型
2.12.3TDrawDocument类
2.12.4TDrawView类
2.12.5定义文档样本
2.12.6支持应用程序中的Doc/View
2.12.7获取更多信息
2.13第12步:转向MDI
2.13.1在应用中支持MDI
2.13.2TDrawDocument及TDrawView的改动
2.13.3TDrawListView类
2.13.4获取更多信息
2.14进一步学习
第三章 应用程序对象
3.1最低需求
3.1.1包含头文件
3.1.2创建一个对象
3.1.3找到该对象
3.1.4创建最小的应用程序
3.2初始化应用程序
3.2.1构造应用程序
3.2.2初始化应用程序
3.2.3初始化每个新的实例
3.2.4初始化窗口
3.3应用程序消息处理
3.3.1特殊消息处理
3.3.2空闲处理
3.4关闭应用程序
3.4.1改变关闭行为
3.5使用控制库
3.5.1使用BorlandCustonContras库(BCCL)
3.5.2使用Microsoft3―D控制库
第四章 界面对象(interfacecbjects)
4.1界面对象有何用处
4.1.1界面对象要做些什么
4.2类属界面对象:TWindow
4.3创建界面对象
4.3.1什么时候一个窗口的句柄有效
4.3.2让界面元素可见
4.3.3对象特性
4.3.4窗口特性
4.4删除界面对象
4.4.1删除界面元素
4.4.2删除界面对象
4.5父与子界面元素
4.5.1子窗口列表
4.5.2构造子窗口
4.5.3产生子窗口成员
4.5.4删除窗口
4.5.5自动生成
4.5.6操作子窗口
4.5.7查找一个特定的子窗口
4.5.8利用子窗口列表
4.6登录窗口类
第五章 事件处理
5.1说明响应表
5.2定义响应表
5.3定义响应表入口
5.3.1命令消息宏
5.3.2Windows消息宏
5.3.3子对象ID通知消息宏
第六章 窗口对象
6.1使用窗口对象
6.1.1构造窗口对象
6.1.2设置创建属性
6.1.3创建窗口界面元素
6.2布局窗口
6.2.1布局限制
6.2.2使用布局窗口
6.3框架窗口
6.3.1构造框架窗口对象
6.3.2修改框架窗口
6.4装饰框架窗口
6.4.1构造装饰框架窗口对象
6.4.2向装饰框架窗口增添装饰
6.5MDI窗口
6.5.1MDI应用程序
6.5.2建立MDI应用程序
第七章 菜单对象
7.1创建菜单对象
7.2调整菜单对象
7.3查询菜单对象
7.4使用系统菜单对象
7.5使用弹出式菜单
7.6在主窗口里添加菜单资源
第八章 对话框对象
8.1使用对话框对象
8.1.1构造一对话框对象
8.1.2执行对话框功能
8.1.3关闭对话框
8.2使用一对话框作为主窗口
8.3在对话框中操作控制命令
8.3.1利用控制进行通讯
8.4联系界面对象和控制
8.4.1控制对象
8.4.2确定控制
8.5使用对话框
8.5.1使用输入对话框
8.5.2使用普通对话框
8.5.3使用颜色设置对话框
8.5.4使用文件打开对话框
8.5.5使用文件保存对话框
8.5.6使用查询和替换对话框
8.5.7使用打印对话框
第九章 文档/视图对象
9.1文档和视图是如何共同工作的
9.1.1文档
9.1.2视图
9.1.3文档和视图类的联系
9.1.4DOC/View(文档/视图)的管理
9.2文档模板
9.2.1设计文档模板类
9.2.2创建模板类实例
9.2.3调整已存在模板
9.3使用文档管理器
9.3.1构造文档管理器
9.3.2TDocManager事件处理
9.4创建文档类
9.4.1构造TDocument
9.4.2在文档上添加功能
9.4.3数据访问函数
9.4.4关闭文档
9.4.5扩展文档功能
9.4.6使用文档管理器
9.4.7使用视图
9.5建立视图对象
9.5.1构造TView
9.5.2在视图上添加功能
9.5.3在视图上添加显示方式
9.5.4关闭视图
9.6Doc/View事件处理
9.6.1在应用程序对象中处理Doc/View事件
9.6.2在视图中处理Doc/View事件
9.7Doc/View特性
9.7.1特性的值和名称
9.7.2访问特性的信息
第十章 控制对象
10.1控制类
10.1.1什么是控制
10.2构造和取消控制对象
10.2.1构造控制对象
10.2.2显示控制
10.2.3撤消控制
10.3控制对象间的通讯
10.3.1操纵控制
10.3.2响应控制
10.3.3像对话框一样操作窗口
10.4使用特别的控制
10.4.1使用列表框控制
10.4.2使用静态控制
10.4.3使用按钮控制
10.4.4使用选择框和单选按钮控制
10.4.5使用组合框
10.4.6使用滚动条
10.4.7使用滑动尺和标尺
10.4.8使用编辑控制
10.4.9使用组合框
10.5设置并读取控制值
10.5.1使用传输缓冲区
10.5.2定义传输缓冲区
10.5.3定义相应的窗口或对话框
10.5.4传输数据
第十一章 小工具和小工具窗口对象
11.1Gadgets(小工具)
11.1.1TGadget类
11.1.2从TGadget中派生
11.2ObjectWindows的Gadget类
11.2.1TSeperatorGadget类
11.2.2TTextGadget类
11.2.3TBitmapGadget类
11.2.4TButtonGadget类
11.2.5TControlGadget类
11.3Gadget窗口
11.3.1从TGadgetWind0W中派生
11.4ObjectWindowSGaDget窗口类
11.4.1TControlBar类
11.4.2TMessageBar类
11.4.3TStatusBas类
11.4.4TToolBox类
第十二章 打印机对象
12.1建立一打印机对象
12.2建立一打印输出对象
12.3打印窗口内容
12.4打印一文档文件
12.4.1设置打印参数
12.4.2计数页数
12.4.3打印每页
12.4.4指明另外的页
12.4.5其他的打印输出考虑事项
12.5选择不同的打印机
第十三章 图形对象
13.1GDI类组织方式
13.2改变被封装的GDI功能
13.3处理设备场境
13.3.1TDC类
13.3.2对象数据成员和函数
13.4TPen类
13.4.1构造TPen
13.4.2访问TPen
13.5TBrush类
13.5.1构造TBrush
13.5.2访问TBrush
13.6TFont类
13.6.1构造TFont
13.6.2访问TFont
13.7TPalette类
13.7.1构造TPalette
13.7.2访问TPalette
13.7.3扩展TPalette
13.8TBitmap类
13.8.1构造TBitmap
13.8.2访问TBitmap
13.8.3扩展TBitmap
13.9TRegion类
13.9.1构造和取消TRegion
13.9.2访问TRegion
13.10TIcon类
13.10.1构造TIcon
13.10.2访问TIcon
13.11TCursor类
13.11.1构造TCursor
13.11.2访问TCursor
13.12TDib类
13.12.1构造和取消TDib
13.12.2访问TDib
13.12.3扩展TDib
第十四章 验证对象
14.1标准的验证类
14.1.1验证基类
14.1.2过滤器验证类
14.1.3划定验证类范围(范围验证类)
14.1.4查找验证类
14.1.5串查找验证类
14.1.6图象验证类
14.2使用数据验证类
14.2.1构造一个编辑控制对象
14.2.2构造并分配验证对象
14.3重载验证类成员函数
14.3.1成员函数Valid
14.3.2成员函数IsValid
14.3.3成员函数IsValidInput
14.3.4成员函数Error
第十五章 可视基控制对象
15.1使用VBX控制
15.2VBX控制类
15.2.1TVbxControl类
15.2.2TVbxEventHandler类
15.3处理VBX控制消息
15.3.1事件响应表
15.3.2解释一控制事件
15.3.3查找事件信息
15.4访问VBX控制
15.4.1VBX控制特征
15.4.2VBX控制方法
第十六章 ObjectWind0ws动态链接库
16.1编写DLL函数
16.1.1DLL入口和退出函数
16.1.2输出DLL函数
16.1.3输入(调用)DLL函数
16.2写入共享的ObjectWindows类
16.2.1定义共享类
16.3TModule对象
16.4使用ObjectWindows作为一DLL
16.5从一非ObjectWindows应用程序中调用―ObjectWindowsDLL
16.6隐式和显式载入
16.7混合静态和动态链接库
第十七章 库参考信息
TBrid类(示例)
ObjectWindows库(OWL)
ObjectWindos头文件
ObjectWindows资源文件
ObjectWindows库参考(OWLreference)
BF_xxxx常量
CM_xxxx编辑常量
CM_xxxx编辑文件常量
CM_xxxx编辑文件退出常量
CM_xxxx编辑替代常量
CM_xxxxMDI常量
DECLARE_RESPONSE_TABLE宏
DEFINE_DOC_TEMPLATE_CLASS宏
DEFINE_RESPONSE_TABLE宏
dmxxxx文档管理模式常量
dnxxxx文档消息数
dt文档视口常量
END_RESPONSE_TABLE宏
EV_xxxx宏
ID_xxxx文件常量
ID_xxxx打印机常量
IDA_xxxx加速键ID常量
IDM_xxxx菜单ID常量
IDS_xxxx文档字符串ID常量
IDS_xxxx编辑文件ID常量
IDS_xxxx例外消息
IDS_xxxx列表视口ID常量
IDS_xxxx打印机字符串ID常量
IDS_xxxx有效性ID常量
IDW_MDICLIENT常量
IDW_MDIFIRSTC_HILD常量
ImParent常量
LongMulDiv函数
MAX_RSRC_ERROR_STRING常量
NBits函数
NColors函数
ofxxxx文档打开值
pfxxxx特征属性常量
_BUILDWLDLL宏
OWLCLASS宏
OWLDATA宏
OWLDLL宏
OWLFAR宏
OWLFUNC宏
OWLGetVersion函数
shxxxx 文档共享常量
TActionFunc typedef
TActionMemFunc typedef
TAnyPMF typedef
TAnyDispatcher typedef
TApplication 类
TApplication :: TXInvalidMainWindow 类
TBandInfo 类
TBitmap 类
TBitmapGadget class
TBitSet 类
TBrush 类
TButton 类
TButtonGadget 类
TCelArray 类
TCharSet 类
TCheckBox 类
TChoose ColorDialog 类
TChooseColorDialog: :TData 结构
TChooseFontDialog 类
TChooseFontDialog: :TData 结构
TClientDc 类
TClipboard 类
TClipppboardViewer 类
TColor 类
TComboBox 类
TComboBoxData 类
TCommonDialog 类
TCondFunctype
TCondMemFuc typedef
TControl 类
TControlBar 类
TControlGadget 类
TCreatedDC 类
TCursor 类
TDC 类
TDecoratedFrame 类
TDecoratedMDIFrame 类
TDesktopDC 类
TDialog 类
TDialogAttr 结构
TDib 类
TDibDC 类
TDocManager 类
TDocTemplate 类
TDocTemplate T 类
TDocument 类
TDocument:: Lost 类
TDropInfo 类
TEdgeConstraint 结构
TEdge OrSizeConstraint 结构
TEdit 类
TEditFile 类
TEditSearch 类
TEditView 类
TEventHandler 类
TEventHandler:: TEqualOperator 类型
TEventHandler:: TEventInfo 类
TEventStatus 枚举
TFileDocument 类
TFileOpenDialog 类
TFileSaveDialog 类
TFiltervalidator 类
TFindDialog 类
TFindReplaceDialog 类
TFindReplaceDialog: :TData 结构
TFloatingFrame 类
TFont 类
TFrameWindow 类
TGadget 类
TGadgetWindow 类
TGadgetWindowFont 类
TGauge 类
TGdiObject 类
TGdiObject::TxGdi 类
TGroupBox 类
THintMode 枚举
THSLider 类
TIC 类
TIcon 类
TInputDialog 类
TInStream 类
TKeyboardModeTracker 类
TLayoutConstraint 结构
TLayoutMetrics 类
TLayoutWindow 类
TListBox 类
TL'stBoxData 结构
TListView 类
TLookupValidator 类
TMDIChild 类
TMDIClient 类
TMDIFrame 类
TMeasurementUnits枚举
TMemoryDC 类
TMenu 类
TMenuDescr 类
TMenuDescr: :TGroup 枚举
TMessageBar 类
TMetaFileDC 类
TMetaFilePict 类
TModule 类
TModule ::TXInValidModule 类
TOpenSaveDialog 类
TOpenSaveDialog: :TData 结构
TOutStream 类
TPaintDC 类
TPalette 类
TPaletteEntry 类
TPen 类
TPicResult 枚举
TPlacement 枚举
TPoint 类
TPointer<> 类
TPopupMenu 类
TPreviewPage 类
TPrintDC 类
TPrintDialog 类
TPrintDialog:: TData struct
TPrintPreviewDc class
TPrinter 类
TPrintAbortDlg Class
TPrintout class
TPrintoutFlags enum
TProcInstance class
TPXPictureValidtor class
TRadioButton 类
TRangekValidatcr 类
TRect Class
TRegion 类
TRelationship enum
TReplaceDialog 类
TResld 类
TResponeTableEntry 类
TRgbQuad Class
TRgbTriple 类
TScreenDC 类
TScrollBar
TScroller 类
TSeparatorGadget Class
TSite Class
TSlider 类
TSortedStringArray typedef
TStatic Class
TStatus Class
TStatusBar 类
TStream Class
TStringLookupValidator Class
TSystemMenu Class
TTextGadget 类
TTileDirection enum
TTinyCaption Class
TToolBox Class
TTransterDirection enum
TValidator Class
TValidator:: TXVaIidator Class
TVbxControl Class
TVbxEventHandler Class
View 类
TVSlider 类
TWidthHeight enum 枚举
TWindow 类
TWindow: TXWindow 类
TWindowFlag 枚举
TWindowAttr 结构
TWindowDC 类
TWindowView 类
TXCompatibility 类
TXOWl 类
Vnxxxx视口标志信息常量
Voxxxx 合法常量
Voxxxx 异常状态枚举
十八章 事件处理程序
十九章 调度函数
HBRUSH HDC_W_U_Dispatch
i_LPARAM_Dispatch
i_U_W_U_Dispatch
i_WPARAM_Dispatch
LRESULT_WPARAM_LPARAM_Dispatch
U_POINT_Dispatch
U_U_U_U_Dispatch
U_U_U_W_Dispatch
U_Dispatch
U_WPARAM_LPARAM_Dispatch
v_PARAM_Dispatch
v-POINT_Dispatch
v_POINTER_Dispatch
v_U_B_W_Dispatch
v-U-POINT-Dispatch
v_U_U_Dispatch
v_U_U_U_Dispatch
v_U_U_W_Dispatch
v_Dispatch
v_WPARAM_Dispatch
v-WPARAM_LPARAM_Dispatch
v_W_W_Dispatch
第二十章 封装的WINAPI函数
附录A OjbectWindows1.0到ObjectWindows2.0的转换
A.1转换用户码
A.1.1转换到BorlandC十十4.0
A.1.2OWLCVT转换
A.1.3OWLCVT命令行语句
A.1.4备份旧的源文件
A.1.5如何在命令行中使用OWLCVT
A.1.6如何在IDE内使用OWLCVT
A.2转换清单
A.3转换过程
A.3.1处理消息和事件
A.3.2改变窗口对象
A.3.3调用WindowsAPI函数
A.3.4改变头文件
A.3.5ObjectWindows资源
A.3.6构造虚拟类
A.3.7强制转换虚基类到派生类型
A.3.8从基于对象的容器类库移到BIDS库
A.3.9流
A.3.10MDI类
A.3.11MainWindow变量
A.3.12用一个对话框作主窗口
A.3.13TApplication消息处理函数
A.3.14DefxxxProc函数
A.3.15绘图函数
A.3.16CloseWind0ws、ShutDownWind0w和Destroy函数
A.3.17ForEach和FirstThat函数
A.3.18TComboBoxData和TListBoxData类
A.3.19TEditWindow和TFileWindow类
A.3.20TSearchDialog和TFileDialog类
A.3.21ActivationResponse函数
A.3.22分发处理函数
A.3.23DispatchAMessage函数
A.3.24KBHandlerWnd
A.3.25MAXPATH
A.3.26风格约定
A.4故障检查
A.4.1OWLCVT错误
A.4.2编译程序警告
A.4.3编译程序错误
A.4.4运行时间错误
· · · · · · (收起)
读后感
用户评价
坦白说,这本书的阅读门槛略高,它显然是为那些已经具备一定C++基础并渴望迈入高级GUI编程领域的工程师准备的“进阶读物”。书中使用的术语和面向对象设计原则的引入,要求读者必须对继承、多态、虚函数等概念有扎实的把握。尽管如此,作者在引入新概念时,总会提供一个精心构建的上下文场景,确保读者理解该技术点在整个应用程序结构中的定位。我曾尝试在不熟悉C++的情况下阅读,结果发现进展缓慢,但当我回顾了相关的指针和内存管理知识后,再次拾起这本书时,豁然开朗。这本书的价值在于它迫使你进行更高层次的抽象思考,它不是一个即插即用的代码库,而是一套构建健壮、可维护大型应用的心法口诀。它教会的不仅仅是“如何做”,更是“应该如何思考一个面向对象的界面系统”。
本书在代码示例的选择和演示上展现了极高的专业水准。作者并没有采用大量简单的“Hello World”式练习来凑篇幅,而是设计了一系列层次递进、功能完备的小型应用程序作为教学载体。这些示例代码结构清晰,命名规范,完全可以作为实际项目开发的参考蓝本。我特别注意到,书中对于错误处理和异常机制的讨论占据了相当大的篇幅,这在许多技术书籍中往往是被轻描淡写的环节。作者详细阐述了在不同窗口状态下如何安全地捕获和响应系统错误,确保应用程序的健壮性。这种对“健壮性”的执着,体现了作者在多年项目实践中积累的宝贵经验。对于任何一位希望将自己的应用程序推向商业化水平的开发者来说,从这些代码中汲取的教训,其价值远超书本的价格本身。
这本书的理论深度和实践广度达到了一个令人惊叹的平衡点。作者显然对ObjectWindows的底层架构有着极其透彻的理解,书中对于消息映射机制、窗口生命周期管理以及控件如何与操作系统API进行交互的论述,细致入微,几乎没有遗漏任何关键环节。我尤其欣赏作者在讲解复杂设计模式时所采用的类比和实例,它们有效地架设了理论与实际应用之间的桥梁。许多同类书籍往往停留在API调用的表面介绍,而这本书却深入挖掘了“为什么”和“如何更优雅地”实现功能。例如,对于资源文件(如.RC文件)的处理流程分析,其详尽程度远超我的预期,它揭示了编译器和链接器在构建图形界面应用时幕后的工作原理。读完相关章节,我感觉自己对MFC(或类似框架)的依赖性降低了,取而代之的是一种更具掌控感的开发视角,仿佛手中多了一把精密的瑞士军刀,可以应对各种突发状况。
这本书的装帧设计实在让人眼前一亮,封面采用了一种沉稳的深蓝色调,搭配着烫金的字体,散发着一种专业而又不失典雅的气息。内页的纸张质量上乘,触感细腻,即便是长时间阅读也不会感到眼睛疲劳。更值得称赞的是它的排版布局,逻辑清晰,章节划分得当,使得复杂的概念也能被轻易地消化吸收。书中的插图和代码示例都经过了精心的设计和标注,即便对于初学者而言,也能迅速抓住重点。在阅读过程中,我发现作者在处理技术细节时极为严谨,每一个函数调用和对象模型的阐述都力求精确无误,这无疑为我们这些希望深入理解底层机制的开发者提供了极大的便利。翻阅全书,能感受到编排者在提升阅读体验上的良苦用心,从目录的设计到索引的编排,都体现出对读者需求的深刻理解。这种对细节的极致追求,使得这本书不仅仅是一本技术手册,更像是一件精心打磨的艺术品,值得我们珍藏和反复研读。
从软件工程的角度审视这本书,它提供的不仅仅是技术知识,更是一种成熟的软件开发哲学。作者反复强调模块化、组件化设计在ObjectWindows环境下的重要性,并清晰地论证了如何通过良好的设计来抵御“意大利面条式代码”的侵蚀。书中关于自定义控件的开发流程描述得极其详尽,它引导读者思考如何将复杂的用户交互封装成可复用的对象,这对于构建大型、多人协作的项目至关重要。它让我重新审视了自己过去在处理UI逻辑时的随意性。阅读过程中,我多次停下来,对照自己的现有代码进行重构思考,尝试将书中所倡导的清晰接口和严格的职责分离原则应用进去。这本书真正做到了“授人以渔”,它提供的知识框架足以支撑读者在未来面对新的GUI框架或工具包时,依然能快速上手并设计出高质量的软件产品。