更多感受-Hello Windows
提示:建议您事先阅读以下预备课程:
《如何用C++Builder创建一个“图形用户界面”应用工程?
》
本小节提供两个版本的“Hello Windows”程序。其难度不会超出上述的预备课程,但是,和图文并茂的预备课程不同,正式课程的内容在基础性的知识点上,花费较少的笔墨;
因此事先学习指定的预备课程,大有好处。
通过该预备课程您必须学会:如何新建、并保存一个GUI的应用工程;如何往表单上添加控件;及如何设置选中控件的属性,包括事件。
甚至,如果对于创建“控制台”的应用工程仍不熟悉,那么您也应复习预备课程:《如何用C++Builder创建一个“控制台”应用工程?》
第1小节:Hello Windows!
本小节提供3个版本的“Hello Windows”程序。
版本一
新建一“图形用户界面”应用工程,并及时保存。然后在控件栏上在“Standard”页上找到“Lable/标签”控件。将其添加到Form1上。

(Standard 页上的 Lable控件)
确保在表单上,选中新加的标签控件,然后按F11键,找到“对象检视器”,修改Lable1的“Caption”属性。将其改为“Hello
Windows!”。
继续在“对象检视器”内,找到Label的“Font”属性,即“字体”。您会发现该属性内容栏带有一个“...”的按钮,点击它(或者按Ctrl +
Enter),弹出一个用于设置字体的对话框。将其“大小”改大一点,比如改为24,颜色修改为蓝色,点击确定按钮退出。现在,Form1设计结果如下:

(Form1 设计结果)
保存工程(Ctrl + Shift + S),然后按F9运行该程序。我们没有写一行代码,但是我们成功地向Bill
Gate的Windows打了声招呼,让我们就这样一头撞进Windows的世界吧。
版本二
关闭前一程序(菜单“File -> Close
all”)。再接再厉,我们再一个图形版的Hello程序。不过,这次我们要在上一版本的基础上,玩一个小小的“把戏”。
版本二开始的工作,和版本一完全一样!请您重复一遍;当然,在保存工程时,将其保存在另外的目录内,以免覆盖了版本一的代码。
在此基础上,我们来做点修改,首选,修改标签的字体(Font)属性:

(Hello Windows 版本二中,Label1的字体修改)
修改字体颜色,仅是为了方便和上一版本做出区别;而修改字体名称,及设置字符集为“CHINESE_GB2312”,原因在于后面我可能会让Lable显示汉字。现在Form1设计结果如下:

(版本二Form1设计结果)
|
如果不正确的设计字符集为“CHINESE_GB2312”,那么Label1在显示汉字时,往往无法正确计算汉字的字符宽度,从而只显示部分字符串。 |
下面,我们需要修改代码。
找到代码编辑窗口(您可以在Form1上按F12键切换),应该看到的代码是Unit1.cpp;找到以下代码:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
|
(原有的代码)
然后添加代码,结果为:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
if (ParamCount() > 0)
{
this->Label1->Caption = "Hello " + ParamStr(1) + "!";
}
}
|
(加入新代码)
保存工程及代码。按F9编译运行……运行时出现的窗口,除了前述的字体颜色等区别之外,和版本一没有什么两样了。没关系,让我们关闭该窗口;继续回到C++
Builder,进行以下操作:
选择主菜单Run项,再选择其子菜单项Parameters....:

(选择Run/Parameters...菜单项)
将弹出运行参数对话框,请在其内输入你的姓名:

(请在 Parameters 一栏内输入您的尊姓大名)
点击“OK”按钮确认退出。再次按F9运行您的新版Hello Windows!结果是?

(版本二的Hello Windows运行结果示例)
这个例子演示了一个图形窗口应用程序,也可以方便地得到其运行参数。同时也演示了如何用CB在编程时设置当前工程的运行参数。在这里,我们的运行参数就是前面输入的尊姓大名。当然,我们也可以像对待一个标准的Windows程序一样,为该程序创建一个快捷方式,然后设置其运行参数,方法如下:
首先进入工程的保存目录,然后找到该工程编译好的exe文件。我这里工程名保存为helloWin2.bpr,所以可执行文件名就是helloWin2.exe了。通过右键,为该程序创建一个快捷方式。然后右键点击该快捷方式,在弹出菜单中选择“属性”,出现该快捷方式的属性设置窗口:

(通过快捷方式,设置一个EXE文件的运行参数)
在目标栏的原有内容之后,输入一个空格,然后再输入您的姓名。确认退出该对话框。再双击刚才建立的快捷方式,我们的程序就会运行,并且显示结果和前面在CB里运行是一样的。
| 上例中,如果参数中包含有空格,比如:南
郁。程序运行结果将只把“南”这个字当成第一个参数。即,结果显示:Hello
南。解决这一问题,是在完整参数两端加上英文引号:""。如:"南 郁"。 |
版本三
版本三建立在版本二的基础上,因此,请您新建一个Windows应用工程,然后将版本二的设计工作重复一次(仅指界面设计工作,因此,版本二中代码不必输入)。同样出于区分
方便,这回,那个用于显示“Hello……”的Label,其字体颜色,被我设置为绿色。
新的工作首先是在表单上增加两个控件,Label、Edit(输入框)、Label控件我们使用过,下面是Edit控件的位置:

(Edit控件就在Label控件之后)
修改新加入的Label的Caption属性:What is your name?
现在Form1表单如下:

(Hello Windows 版本三设计界面)
我们的目标是:让用户在编辑框(Edit1)内输入自己的名字,同时,上面的Label显示针对用户当前输入内容的问候。
在Form1表单上,选中Edit1控件。然后修改它的OnChange事件,步骤如下图所示:

(为Edit1设置OnChange事件)
鼠标在Edti1的OnChange事件双击后,切换到代码编辑窗口,输入以下代码(请注意只有一行需要输入,其余都是自动产生的代码):
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
this->Label1->Caption = "Hello " + this->Edit1->Text + "!";
}
|
(Edit1 OnChange 事件代码)
保存工程及代码。按F9编译,运行。正确的结果是:你每在输入框内输入,或修改一个字,上面的Lable就会直接发生变化。下图是我的运行结果:

(Hello Windows 版本三运行结果示例)
作业:
- 将版本一中的Label1字体属性,修改为“加粗、下划线”;
- 版本二,如何允许在命令行加入的参数,中间带有空格,比如:张 三;
- “汉化”版本三,包括“What is your name?”翻译为中文提示,及问候中的“Hello”修改为“您好”。
- 版本三中,编辑框内的文本,其初始值是“Edit1”,请通过设置其Text属性,将初始值修改成"Windows"。
- 问:设计期间的Form,和运行期间的实际窗体,从外表上看,最明显的区别是什么?
|