白话windows编程第二章GUI的世界..doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

d47fv82b5hI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档