- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
白话windows编程第二章GUI的世界.
第二章 GUI的世界(二) 在何时何处画
上一章我们讲到,在Windows的世界里,我们所看到的一切,都是“画”出来的。并且,我们大胆地在Windows的桌面画了一个红叉。画红叉似乎很爽,不过那个程序更像是一个恶作剧。只是用来证明我们可以画。这一章,我们将要学习如何“正经地”画。
每一个“正经地”的Windows应用程序,往往都是相似的,它们只在合适的时机,合适的位置上画需要的东西。我们首先来看看合适的位置是哪里。
2.1 在自己的窗口上画
我们说过,在Windows世界里,有无数的窗口(请复习第一章).现在,让我们也来制造一个窗口——通过CB,这是一件再容易不过的事了。
2.1.1 准备工作:创建一个窗口
同时在学习《白话 C++》的学员注意了,我们在《白话 C++》里,经常创建“控制台工程”,就是那个“黑黑的”的窗口。但在《白话 Windows编程》,我们更多的是以如下步骤创建一个正常的Windows应用程序工程。提醒您不要顺手就来一个控制台工程,否则,你会永远找不到“窗口”。
运行 C++ Builder 6,菜单:File | New | Appication。 CB6为我们新建一个空白的Windows程序工程(Project)。并且自动生成了一个表单(Form)。我们知道,当程序运行之后,这个表单就被称为窗口(Window)。(如果你对这些及后面一些CB相关操作不熟,请复习《白话C++》的第二章)。
(对于CB5,在菜单File里,可以直接到的New Application。)
这个工程很重要,马上保存工程!按一下Ctrl + Shift + S 。建议在磁盘上建立一个专门的文件夹来保存这个工程。比如,建立:bhwin\ls2\prj1\ 这样层次的文件夹。至于CPP文件名和工程名字,我都只是取默认的Unit1.cpp和Project1.bpr。
2.1.2 观察一个窗口的蛛丝马迹!
2.1.2.1 第一个问题
没错,这一小节里,我们将像一个神探一样去观察一个窗口,并且提出一个个问题。要撕开一匹布,最难的在于撕开最开始的一个口子,下面的一个个问题,就是我们撕裂Windows面纱的第一道口子。希望你能有一付好眼力。
保存之后,我们还是什么代码也不必写,直接按F9,编译,运行。在我的电脑上,显示了一个窗口。就是设计时的那个表单Form1。为了不占用太大版面,我把窗口拉得很小。
(图一:一个“光秃秃”的窗口)
这是一个光秃秃的窗口……这真的是一个“光秃秃”的窗口吗?仔细看这个窗口,你能发现什么?有个同学特深沉,他说看出这窗口上隐含着一幅3维立体图,并且他建议大家最好用“斗鸡眼”的方式来观察………拷!真是太夸张了,有这样的学生,我觉得大家不要叫我老师,还是叫我“大师”吧。
事实上,这个窗口并非空无一物,它有一个标题栏,标题是:Form1,在右方,还有三个小按钮,分别表示“最小化”、“最大化”、“关闭”……听到这里,你们千万不要准备退学啊!虽然这些你们早就知道,可是我们的第一个问题也出来了:
你有没有想过,标题栏,及窗口边框等,它们也是画出来的!可是,它们是由谁画出来的呢?
第一个问题:窗口默认的图形元素,是谁在为我们画的呢?
2.1.2.2 第二个问题
退出 Form1,我们在该表单上放一个Button(按钮)。
首先,在CB的“Standard”页(也就是第一页),找到按钮控件(TButton):
(Standard页上 TButton 控件)
鼠标选中图示中有个“OK”的按钮,然后在当前表单上放置一个按钮,尽量放在表单的中间。
(在表单上放置一个按钮)
双击Button1,出现代码编辑窗口,输入以下代码(黑体部分):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
?? //设置当前客户区的画笔(Pen)
?? Canvas-Pen-Color = clRed;? //画笔的颜色为红色(Red)
?? Canvas-Pen-Width = 10;???? //画笔的粗细
?? //开始画叉啦,需要画两笔,
?? //这是第一笔:左上到右下
?? Canvas-MoveTo(0,0); //把画笔移到(Move to)坐标0,0处,即 客户区的原点
?? Canvas-LineTo(ClientWidth,ClientHeight);? //从当前位置画一条线到客户区的右下角。
?? //第二笔:右上到左下:
?? Canvas-MoveTo(ClientWidth,0);?
??
文档评论(0)