没有合适的资源?快使用搜索试试~ 我知道了~
c++builder6.0教程
4星 · 超过85%的资源 需积分: 50 1 下载量 99 浏览量
2014-04-16
20:39:31
上传
评论
收藏 1.81MB PDF 举报
温馨提示
试读
152页
我们用高级语言写程序,我们很得意,因为高级语言比较接近人类的语言,使我们 用起来得心应手,所以我们当然得意。但我们更得意的一定是让程序代码赶快变成可执 行文件。
资源推荐
资源详情
资源评论
C++Builder 的基本功能
我们用高级语言写程序,我们很得意,因为高级语言比较接近人类的语言,使我们
用起来得心应手,所以我们当然得意。但我们更得意的一定是让程序代码赶快变成可执
行文件。
无论是在写代码的过程,还是最后要编译成可执行文件,都需要有一个工具存在。
这一工具一般称为编程集成环境(IDE)。之所以称为集成,是因为从写代码到最后软件
的出炉,我们需要它的地方实在太多了,这里列出其中最重要的功能项。
1、代码编辑:方便的代码编辑功能。尽管你可以使用记事本、Word 或其它任何文
本编辑器来写代码,但除非特殊需要,否则那将是极为低效的方法。相反,现在的编程
集成环境,都相当的智能,举例如:代码自动功能,可以在很多情况下自动完成我们所
需的代码,既准确还迅速。Borland 公司出品的编程集成环境不仅有常见的关键字高亮
等功能,还支持代码模板,支持键盘宏,同样支持高级的脚本插件功能。
2、界面设计:可视化的程序界面设计功能。你所要产生的窗口,在设计期间就真
实地出现,包括字体、颜色和定位。比如:你不仅可以插入 falsh 的动画,而且无需运
行,就直接可以在你的界面上看到该动画的演播,这是别的编程环境不能做到的。
3、程序编译:这是编程工具的主要功能。我们写的代码在成为机器能懂的可执行
程序时,必须通过编译。
4、程序调试:如何尽量减少你程序的 BUG 呢?没有编程集成环境提供的强大调试
功能,我们做的程序将毫无质量保证。
5、代码优化:Borland 提供的编译器,不仅在编译速度上一直在美国屡获大奖,
而且其代码自动优化功能一直领先对手几近一个时代。使用编程集成环境,我们可以轻
松获得更快更优的最终可执行程序文件。
6、辅助程序安装:程序的安装已属于另外一种工具的范畴,但我们仍可以通过编
程集成环境来决定最终生成单一可执行文件,还是带有其它动态库。如果是后者,我们
还可以通过集成环境来检查程序运行时调用了哪些动态库文件。
C++Builder 提供的功能远不止我上面所说的,并不是因为我嘴笨,而是我认为对
一个工具,你只有动手使用,才会真正了解它。
C++是一门语言,而 Borland C++Builder 则是语言实现工具。作为一个编程工具,
CB 提供以上功能正是份内之事。在这个意义上,你可以认为 CB 是 Word2000,而 C++则是
英语或汉语。正如我们用英语或汉语在 Word2000 上写出优美文章,编程可说为:我们
用 C++语言在 CB 上编写出优美的程序。
VCL vs. MFC
在作为一种编程工具的意义上,我们认为 C++Builder 和你也许常听的 VC(Visual
C++)没有什么本质的区别。就像 Word2000 和 WPS2000 在本质都是字处理软件。但现在
我们要从另外一个角度讨论 C++ Builde 这个编程工具。这个角度就是“封装”——面
向对象编程思想中的最重要也是最基础的概念。
一个要学习编程的人,可能从 C 开始学起。学 C 时,我们没有接触那些挺玄的概念,
到了 C++,一切就来了,什么面向对象,什么封装、继承、多态……于是我们兴奋起来,
努力去理解、掌握,运用这些概念所代表的技术,在掌握这些别人暂时未能理解的概念
之后而颇有成就感……。
现在我要问的是,为什么要有这些概念?这些技术?正确回答这个问题,不仅有助
于我们今后对编程语言各种概念的学习,而且它能让我们避免成为新技术的奴隶,这一
切也许听起来有些形而上,不过我想通过以下讨论,至少可以回答一个很现实的问题:
为什么要选 C++Builder?而不是我们更常听的 VC?这是我碰到的编程初学者较疑惑的
问题之一。
如果人类长有翅膀,那么飞机大抵永远不会被发明。飞机的发明,是为了弥补人类
自已不能飞翔的缺陷。不能说所有的技术都是这样,但 C++对于 C 的发展,完全是为弥
补程序员脑力的不足。一个在校生在学会 C 后,往往并没有机会用 C 去实践一个大中型
的项目,体会不到在一个庞大软件工程中,非面向对象语言的短处,所以在之后学习 C++
的过程中,也就很难真正体会到面向对象语言的长处。简短一点说:不知道 C 的短处,
就不懂 C++的长处。相反,倒是很快就发现 C++的缺点:它的代码效率多数情况下都要
比 C 低不少。
前面我们说过低级语言与高级语言的对比,C++语言也正是从语法结构和语言功能
上来限定或实现一门编程语言更加接近人在现实生活中的思维习惯,从而达到减轻人的
记忆和判断上的负担。这其中最佳的方法之一就是所谓的“封装”。
VC 的封装类库称为 MFC,它是一种很低阶的封装,它并没有按照人类的思维习惯来
重新组织和解释 Windows 对象(指 Windows 编程中所需的数据,处理,机制,接口), 而
纯粹是 API 一对一的翻版。这样的封装工作带来代码封装所固有的代码效率降低的副作
用,却没有给使用者带来任何方便。如果你是编程初学者,而你身边又有 VC 高手,那
么你一定要多多向他学习请教,因为一个真正的 VC 编程高手,其同时一定也是一个深
刻理解 Windows 内核机制(消息循环,内存管理,多任务实现,资源使用等),熟悉 Windows
各种常用 API 函数等等的高手。
C++Builder 对封装库称为 VCL(带 VC 字样,可别以为它是 Visual C++,其实它是:
Visual Component Library,即:可视控件库)。
VC 的 MFC 和 CB 的 VCL 都是基于(但不限于)对 Windows API(应用程序接口函数)
的封装,为什么要对 API 进行封装?这就是回到了我们前面说过的,为什么有了 C 又会
有 C++的问题。因为操作系统是用 C 和汇编写成的,它获得到操作系统必须的代码效率,
但对应用程序开发者而言,它失去了易用性。所以微软和 Borland 都使用高级语言对之
进行封装工作。二者谁进行得更好呢?
要想成为 Windows 编程高手,最终一定要绕过各种封装,理解 Windows 对象。但作
为一个初学者,我们必须挑选一个好的封装。下面我们举字体(Font)作为例子,将三
者:没有封装过的 Windows 字体 API、封装过的 MFC 字体对象和封装过的 VCL 字体对象
做一个对比。为了保证不会有偏倚和差错,有关前二者的代码,都是笔者从 MSDN(微软
提供的帮助文档)中直接拷贝出来。
Window API
Windows API 创建指定样式字体:
HFONT CreateFont(
int nHeight, // height of font
int nWidth, // average character width
int nEscapement, // angle of escapement
int nOrientation, // base-line orientation angle
int fnWeight, // font weight
DWORD fdwItalic, // italic attribute option
DWORD fdwUnderline, // underline attribute option
DWORD fdwStrikeOut, // strikeout attribute option
DWORD fdwCharSet, // character set identifier
DWORD fdwOutputPrecision, // output precision
DWORD fdwClipPrecision, // clipping precision
DWORD fdwQuality, // output quality
DWORD fdwPitchAndFamily, // pitch and family
LPCTSTR lpszFace // typeface name
);
MFC
(Visual C++)
将 HFONT 封装为 CFont
BOOL CFont::CreateFont (
int nHeight,
int nWidth,
int nEscapement,
int nOrientation,
int nWeight,
BYTE bItalic,
BYTE bUnderline,
BYTE cStrikeOut,
BYTE nCharSet,
BYTE nOutPrecision,
BYTE nClipPrecision,
BYTE nQuality,
BYTE nPitchAndFamily,
LPCTSTR lpszFacename
);
VCL
(C++Builder)
将 HFONT 封装为 TFont1
要设置字体名,高度,尺寸等使用以下代码:
Font->Name = “宋体”; //设置为宋体
Font->Size = 24; //设置尺寸为 24 号 2
将字体的粗,斜,下划线,删除线再封装为 TFontStyle 属性:
Font->Style = Font->Style << fsBold << fsUnderlien; //字体
增加粗体和下划线属性。
对于字体不常用的旋转等属性,不进行封装,你可以直接调用 API 函
数来设置 TFont 的 Handle 属性。
比较表中第一行和第二行:前者是原始的 API,后者是 VC 精心的封装成果,可惜二
者几近雷同;既然你要封装,你就是要让它变得面向对象,易记易用;一模一样的照抄
一遍,然后改改参数的名字,意义何在?如你是想维持代码的效率,那么在繁杂度一样
的情况下,为什么我们不直接使用效率更高的 API 函数呢?
倘若说,MFC 的“封装”纯粹是一种多余,那或许也还可以接受。然而 MFC 偏偏还
要在这种冗余的封装上建立自已的应用程序架构,和前面的“封装”一样,MFC 建立应
用架构的出发点也是良好的,为了方便 Windows 程序员编程的难度,而结果却更糟糕。
有问题的架构犯了类库或接口提供者的大忌:“有协议编程”。
什么叫“有协议编程”?我们先来讲“无协议编程”。所谓“无协议编程”是指接
口的提供者在提供接口时,同时也提供接口的使用约定,这一套约定应该在接口所要提
供的功能上广泛适用,而无须再有种种特殊的例外,这样的接口显然非常适于使用。学
习编程,如果挑错了我们每天都要面对的封装类库,就将永远都在努力处理这些无任何
意义的问题。
MFC 的 CWnd 提供了对 Windows 最基本的窗口元素的封装,其中对创建窗口的函数
的封装为:
未封装的 API:
HWND CreateWindow(
LPCTSTR lpClassName, // registered class name
LPCTSTR lpWindowName, // window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HMENU hMenu, // menu handle or child identifier
HINSTANCE hInstance, // handle to application instance
LPVOID lpParam // window-creation data
);
使用这个 API 函数,我们可以创建各种窗口。
CWnd 封装的函数:
virtual BOOL CWnd::Create (
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID,
CCreateContext* pContext = NULL
);
不用我说,你也能看出这仍然是个改改参数的蹩脚的封装。我们不去管它,现在我
们关心的是:CWnd::Create 对 CreateWindow 进行了封装,可是这一封装的结果是:原
来 CreateWindow 能实现的一些事情,在 CWnd::Create 里突然成了例外。是的,为了适
应 CWnd 在 MFC 架构中所处的角色,程序员在涉及 CWnd 时必须记忆这样一条例外:
“CWnd 的 Create 用于创建窗口的实际元素,但其中参数 dwStyle 不能包含有窗口
风格中 WS_POPUP(弹出式窗口),如果你要建立一个带有该风格的窗口,请使用
CreateEx……”
我仍然要说 VC 也是一个很优秀的编程工具,但对于不想浪费无谓精力的编程初学
者,我个人建议使用 Borland C++Builder,因为它实现真正的对象封装,从而使你可以
节省不低于 80%的时间来学习编程本质的知识——就是我们常说的数据结构与算法,这
些东西最终决定你的编程能力。
下面是 C++Builder 提供我们的最重要的东西:
一、VCL 类库:一个好的底层类库,让我们从学习编程最初时刻就自然而然地学会
使用面向对象的方法来写程序。它大大降低了我们入门门槛的高度,却又让我们一开始
就站在比别人高的位置看待与程序有关的问题;
二、组件技术:组件技术代表了当今编程技术的主要方向,其设计思想与 MS 力推
的 Active 控件如出一辙:拥有相同的先进性。只有借助组件技术,我们才有可能从一
个初学者,迅速成为可实际工作的编程工作者;另一方面,如果作为组件的提供者,我
们可以编写组件的过程中迅速提高自已的编程能力。
C++Builder 还提供了许多其它先进技术,如事件委拖等等,归根到底都是通过封装
让 Windows 编程原本需要长期积累才有可能掌握的知识变得直观易懂。如果你刚刚开始
学习编程,或者学习较长时间仍没有重大突破,或许使用 C++Builder 结合本课程系列,
是个不错的选择。
附言:微软最近推出的 C#相信会对上述 MFC 的不足做一个收拾,它对 C++的扩展与
约束与 Borland C++Builder 对 C++的扩展与约束惊人的相似。如果你乐意,我也真的很
建议你在学完 C++Builde 后,继续学习 C#。
熟悉 Borland C++Builder
一、界面:
启动 Borland C++Builder 后,你会发现它的窗口和我们常见的一体化窗口的应用程
剩余151页未读,继续阅读
资源评论
- chicklee2014-04-18内容比较简单,但讲得很细
冬至NO1
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功