C++ builder 中关于窗体的一些操作

合集下载

用c++ builder 创建具有吸附效果的窗口

用c++ builder 创建具有吸附效果的窗口

用c++ builder 创建具有吸附效果的窗口

在许多程序中,窗口可以被拖放到另一个窗口中,并溶合为一体,例如c++ builder中的Class Explorer与其它窗口就是典型一例,在c++ builder中,这种特性被称为"窗口吸附"。

在bcb中的许多组件都具有与"吸附"功能相关的属性,例如:DockSite属性、UseDockManage属性,以及DragKing属性,它的属性可以设置为dkDock。如果将这些属性值简单设置一下,窗口将自动具有吸附功能,不过这样的吸附功能非常死板,没有实用价值。下面笔者就给大家介绍一下如何在c++ builder中实现真正的窗口吸附效果。

一、设计一个主窗口

新建一工程,主窗体命名为MainForm,单元文件命名为Main。添加一个TMainMenu 命名为MainMenu1,双击该主菜单添加两个子菜单分别为"红色窗口"和"蓝色窗口",这两个子菜单分别用来显示不同颜色的窗口。接着在窗口的最右端添加一个宽度为0,高度为整个窗口高的Panel组件并命名为DockPanel,建立Panel组件是因为被"吸附"的窗口必须要有一个"吸附区",这种吸附区可以是窗口,也可以是窗口化组件,如Panel。再在Panel右边添加一个Splliter组件,命名为VSplliter宽度设为4,高度为窗体的高度。建立Splliter组件是为了有效地建立被吸附窗口的间隔区,并且可以方便用户调整被吸附窗口所占据的宽度。(如图1所示)

二、设计"被吸附"窗口

作为主窗口的设计窗体,除了一般的属性设置外,有关Dock的属性均无需修改,只要将"被吸附"窗体的属性进行修改就可以了。

CBuilder文件操作大全

CBuilder文件操作大全

在编程的过‎程中,文件‎的操作是一‎个经常用到‎的问题,在‎C++Bu‎i lder‎中,可以使‎用多种方法‎对文件操作‎,下面我就‎按以下几个‎部分对此作‎详细介绍,‎就是:

1、‎基于C的文‎件操作;

2、基于‎C++的文‎件操作;

3、基于‎W INAP‎I的文件操‎作;

4‎、基于BC‎B库的文件‎操作;

‎5、特殊文‎件的操作。‎

‎壹、基于C‎的文件操作‎

在‎A NSI ‎C中,对文‎件的操作分‎为两种方式‎,即流式文‎件操作和I‎/O文件操‎作,下面就‎分别介绍之‎。

一、‎流式文件操‎作

这‎种方式的文‎件操作有一‎个重要的结‎构FILE‎,FILE‎在stdi‎o.h中定‎义如下:‎

type‎d ef s‎t ruct‎{

in‎t lev‎e l; /‎* fil‎l/emp‎t y le‎v el o‎f buf‎f er *‎/

uns‎i gned‎flag‎s; /*‎File‎stat‎u s fl‎a gs *‎/

cha‎r fd;‎/* F‎i le d‎e scri‎p tor ‎*/

un‎s igne‎d cha‎r hol‎d; /*‎Unge‎t c ch‎a r if‎no b‎u ffer‎*/

i‎n t bs‎i ze; ‎/* Bu‎f fer ‎s ize ‎*/

un‎s igne‎d cha‎r _FA‎R *bu‎f fer;‎/* D‎a ta t‎r ansf‎e r bu‎f fer ‎*/

un‎s igne‎d cha‎r _FA‎R *cu‎r p; /‎* Cur‎r ent ‎a ctiv‎e poi‎n ter ‎*/

c语言编写窗体程序

c语言编写窗体程序

c语言编写窗体程序

C语言编写窗体程序

序号:1

窗体程序是一种图形用户界面(GUI)应用程序,它通过使用窗口、按钮、文本框等可视化元素来与用户进行交互。C语言是一种通用的编

程语言,它也可以用于编写窗体程序。虽然C语言相对于其他专门用

于GUI开发的语言来说,可能会更加复杂一些,但是通过使用合适的

库和工具,我们仍然能够编写出功能强大且高质量的窗体程序。本文

将介绍如何使用C语言编写窗体程序,并探讨一些相关的主题和概念。序号:2

编写窗体程序需要选择一个适合的库或框架。在C语言中,有一些常

用的库可以用于GUI开发,例如GTK+、Qt和WinAPI等。这些库为我们提供了创建窗体、按钮等控件以及处理用户输入的功能。需要根

据自己的需求和偏好选择合适的库。

序号:3

一种常用的库是GTK+,它是一个跨平台的GUI库,可以在多个操作

系统上运行。使用GTK+编写窗体程序可以很容易地创建各种控件,

并通过信号和回调函数处理用户输入。GTK+库的安装和配置相对简单,可以在Linux、Windows和Mac等平台上使用。接下来是一个使用GTK+库编写的简单窗体程序的示例:

```c

#include <gtk/gtk.h>

static void on_button_clicked(GtkWidget *widget, gpointer data) {

g_print("Hello, World!\n");

}

int main(int argc, char *argv[])

{

gtk_init(&argc, &argv);

C++Builder中不规则窗体的快速显示

C++Builder中不规则窗体的快速显示

C++Builder中不规则窗体的快速显示

不规则窗体的应用增加软件的吸引力

传统的WINDOWS应用软件界面给人的感觉总是千篇一律的方方正正的窗体,看的时间长了难免会有些厌烦,总是希望能见到些不同一般的软件界面。如今,相当数量的商业软件在提供优秀而强大的功能的同时,软件的界面也是做得越来越漂亮,比如《超级解霸2000》中的界面插件,使用过的人一定对其华丽的外观充满好感。作为一个编程爱好者,如果自己写出的软件也拥有类似的界面,也许会吸引更多目光的注视。那么,我们现在就开始动手制作自己的漂亮界面吧。

技术内幕

要想在自己的程序中加入不规则窗体的应用,你首先要熟悉几个WINDOWS API函数的使用,它们是:椭圆形(或圆形)区域创建函数CreateEllipticRgn 、多边形区域创建函数CreatePolygonRgn、矩形区域创建函数CreateRectRgn、带圆角的矩形区域创建函数CreateRoundRectRgn。你可以用这些函数创建不同类型的窗体区域,也可以用WINDOWS API 函数CombineRgn将几个简单区域组合成一个复杂区域。

下一步要做的就是将已经创建好的区域显示在屏幕上,同样也是使用WINDOWS API 函数来实现,这次用到的是SetWindowRgn函数。

WINDOWS API 函数在Borland C++ Builder 头文件中均已定义,在应用程序中使用这些API函数就象使用C++的普通库函数一样。

准备工作

为你的程序准备一幅背景图片,推荐方法是:在PhotoShop中打开图片后使用磁性套索工具选取你所需要的图象轮廓--复制--新建文件(背景使用白色)--粘贴--另存文件(PSD 文件)--用ACDSee等看图软件将保存的PSD文件转换为BMP文件face.bmp备用。如下图:

原创]C++builder组件属性详解

原创]C++builder组件属性详解

原创]C++builder组件属性详解

尽管C++Builder的组件种类繁多,每种组件又都有许多不同的属性,但是在这些众多的属性中有相当一部分是大多数组件所共有的。因此我们应当主要掌握这些共有组件。

在设计时设置属性一般是通过属性窗口来进行的。在属性窗口设置组件属性的操作步骤如下:

1)打开相应对象的属性窗口。

2)从属性列表中选定属性名称。

3)在属性窗口的右列输入或选择新的属性值。

注意:有些属性在设置值右侧有…按钮,单击该按钮会出现相应的设置对话框,设置值需要在对话框中选定。

在代码中设置组件属性的方法是:

对象名称->属性名称=设置值;

下面我们来介绍一些主要组件的主要属性。

窗体form的属性:

1.Caption:标题。是窗体和各种可视化控件的共有属性,用来指定窗体标题栏中的说明文字,默认与控件名相同,但程序员可以在对象监视器和代码中修改。

在代码中修改的格式为:Form->Caption = "da";// da表示程序员输入的标题。

通常,对于Windows系统中的多文档界面( MDI )应用程序,当主框架窗口中的子窗口以最大化显示的时候,应用程序的标题栏中显示的内容为“ - ”;当子窗口以非最大化窗口显示的时候,主框架窗口中只显示应用程序的名称,子窗口有自己的标题栏,其中显示该窗口打开的文件名。所以,当窗体的显示方式发生了改变后,应该立即改变标题栏中的内容。

2.Name:变量名。是窗体和所有控件的共有属性,系统给予其默认名字,但程序员可以在对象监视器修改,不要在代码中修改。

通常,应该在系统开发的设计阶段就将整个工程中所有窗体的名称确定,然后在编程阶段,根据设计文档修改窗体的Name属性。一般情况下,不要在程序运行期间通过代码修改Name属性。

C++builder中关于窗体的一些操作

C++builder中关于窗体的一些操作

C++builder中关于窗体的一些操作

C++ builder 中关于窗体的一些操作(总在最前,遍历控件...)

一、让窗口总是在最前面

Form 的FormStyle属性设置为fsStayOnTop值。

二、动态调用窗体Form

在缺省情况下,由File/New Form生成添加入项目文件中的窗体都具有"Auto Create"(自动创建)的特性。即只要程序运行,该窗体就存在于内存中了,不管当前它是否被调用。具有这种特性的窗体一般适用于窗体属性比较固定、经常被调用的情况。其优点是速度快,缺点是占用内存。在实际程序设计中,会遇见大量类似对话框功能的窗体,它们用于显示状态或输入信息,仅须在程序中调用一下,完成其功能就行了,无需常驻内存。这时可以通过选择Project/Options/Forms,将"Auto--Create forms " 栏中相应的窗体, 如Form1,用" >" 键移动到"Available forms"栏中,并在程序需调用该窗体处,加入下列语句:TForm1 *myform=new TForm1(this);

myform- >ShowModal();

delete myform;

窗体Form1仅是在需要调用时才调入内存,调用完成后,即用delete清除出内存。这样可减少程序对内存资源的占用。

三、遍历窗体控件的方法

要访问或修改窗体上的控件,方法很简单,以TEdit为例子:

Edit1- >Text="";

Edit2- >Text="";

但如果窗体上有十来个像Edit1 这样的控件,需要进行相同的初始化,用上面的方法一个一个地进行,岂不麻烦!所以有必要掌握遍历窗体控件的方法。在介绍该方法之前,让我们先了解一下窗体Form 的Components 和Controls 属性。参见表一。

补充2:C++Builder窗体组件属性与事件简介

补充2:C++Builder窗体组件属性与事件简介

一、 引言
C++Builder的窗体及其中的组件有各种属性值, 的窗体及其中的组件有各种属性值, 的窗体及其中的组件有各种属性值 他们决定了程序的外观, 他们决定了程序的外观,熟悉这些属性值设计 方法对于掌握可视化程序设计十分重要。 方法对于掌握可视化程序设计十分重要。 窗体及其中的组件还对应有不同的事件(函数), 窗体及其中的组件还对应有不同的事件(函数), 程序设计就是要对应事件的响应代码。 程序设计就是要对应事件的响应代码。 本节介绍窗体、标签、文本框、 本节介绍窗体、标签、文本框、命令按钮等几种 常见组件的主要属性的设计方法及常见事件。 常见组件的主要属性的设计方法及常见事件。 对于所有的属性,均有两种设置方法: 对于所有的属性,均有两种设置方法: 可视化设置 程序代码设置
主讲教师: 主讲教师:张鹏祥
补充2:C++Builder组件属性设置 补充2:C++Builder组件属性设置 2:C++Builder
八、常见通用事件
1、 OnClick,用户单击控件触发。 、 ,用户单击控件触发。 2、 OnContextPopup,用户右击控件或用其他方 、 , 式激活弹出式菜单(比如使用键盘)时触发。 式激活弹出式菜单(比如使用键盘)时触发。 3、 OnCanResize,试图调整控件大小时触发。 、 ,试图调整控件大小时触发。 4、 OnResize,在控件调整大小之后立即触发。 、 ,在控件调整大小之后立即触发。 5、 OnConstrainedResize,在OnCanResize发生 、 , 发生 以后立即触发。 以后立即触发。 6、 OnStartDock,当用户以 、 ,当用户以DragKind属性为 属性为 dkDock的方式开始拖动控件时触发。 的方式开始拖动控件时触发。 的方式开始拖动控件时触发 7、 OnEndDock,当对象的拖动结束,或进行了 、 ,当对象的拖动结束, 停靠操作又或终止拖动时触发。 停靠操作又或终止拖动时触发。

C++Builder中IntraWeb在各窗体之间进行切换

C++Builder中IntraWeb在各窗体之间进行切换

C++Builder中IntraWeb在各窗体之间进行切换

Unit1.h 文件内

*******************************************************************************

#include "Unit2.h"

//---------------------------------------------------------------------------

class TIWForm1: public TIWAppForm

{

__published:// IDE-managed Components

TIWLabel *IWLabel1;

TIWButton *IWButton1;

void __fastcall IWButton1Click(TObject *Sender);

private:// User declarations

声明 Form2 的指针

TIWForm2*

ImageForm; //

public:// User declarations

__fastcall TIWForm1(TComponent* Owner);

};

*******************************************************************************

Unit1.cpp 文件内

*******************************************************************************

C++_Builder常用的属性及方法_Rio

C++_Builder常用的属性及方法_Rio

位图按钮(BitBtn)属性列表: 1, Glyph 选择指定的位图 2, NumGlyph 指出位图按钮使用位图的数目(保证每张位图大小 相同) 注意:最多有四张位图 当按钮未选中,NO1; 当按钮不能选择,NO2; 当按钮被单击,NO3; 当用户释放鼠标键时,NO1. 快捷按钮(SpeedButton)属性列表: 1, 缺省大小为25*25。 2, 当AllowAllUp = true时,可以在按下与弹起之间切换。 3, Down表示按钮是否为按下。 4, GroupIndex表示把几个属性相同的按钮编为一组。缺省为0, 表示 不编为一组。 单选按钮(RadioButton)属性列表: 1, Checked 表示按钮是否被选中。缺省为false,表示未被选中。 2, 当多个单选按钮放在同一容器中(如:Form, Panel, GroupBox, RadioGroup等),它们自动成为一组。 单选按钮分组框(RadioGroup) 属性列表: 1, (TStrings) Items其包含许多字符串,每一个字符串代表单选按钮中 的一个单选按钮。打开其后value的字符串编辑器。可以在此输入单选按 钮的标题,每个单选按钮占用一行。 2, Columns 决定单选按钮分组框内分栏的数目,默认是1, 最多为 16. 3, ItemIndex指单选按钮分组框内被选中的序号。-1表示不指向任何 项。
bkNo bkHelp bkClose bkAbort bkRetry bkIgnore bkAll

c++ builder基本知识

c++ builder基本知识

C++ Builder 初学问与答(一)

第一部分:基础入门

1.窗体

1)问:Windows的编程就是在窗体的基础上实现的,C++Builder是怎样处理窗体的呢?

答:窗体的一部分功能通过窗体的属性来实现,窗体的属性非常多,这里只对其中比较重要的属性进行介绍。

1.ActiveControl指定窗体上的某个组件为输入焦点。如下面的语句将窗体上的Label1组件成为输入焦点:ActiveControl=Label1。在同一时时刻,应用程序只能有一个输入焦点。

2.BorderIcons用来设定标题栏上出现哪些系统图标。它是一个集合,可以设成以下几个类型:最大化按钮(biMaximize)、最小化按钮(biMinimize)、帮助按钮(biHelp)和系统菜单(biSystemMenu)。

3.Icon属性用来指定当窗体最小化时显示的图标。

4.KeyPreview属性为true时,表示击键事件发生时先传给窗体,然后再传给有输入焦点的组件上,相当于窗体截获了原本属于组件的事件。缺省值为false,表示击键事件只送到当前有输入焦点的组件上。

5.Menu属性用来指定窗体的主菜单。

6.Visible属性用来确定窗体是否可见。

此外还有一些运行时态属性,这些属性只有在程序运行的时候才能通过编程访问。这种属性主要有:

Active

属性用来确定窗体是否获得输入焦点。

ActiveMDIChild

这个函数将返回当前活动的子窗体。

DropTarget

属性用来指定窗体是否是拖放操作的对象。

Parent

属性用来设定包含窗体的窗口控件,通常是另一个窗体。如果窗体没有包含它的控件,那么它的Parent属性为nil。

cbuilder listview控件的基本用法

cbuilder listview控件的基本用法

cbuilder listview控件的基本用法

ListView控件是C++ Builder中常用的列表显示控件之一,它可以用于展示大量数据,并支持多列和多行显示。ListView控件具有丰富的功能和样式设置,可以满足各种需求。

一、导入ListView控件

在使用ListView控件前,首先需要添加Ctrls单元,该单元中定义了ListView控件的相关类和接口。

二、创建ListView控件

1. 使用C++ Builder的可视化设计工具拖拽一个ListView控件到窗体上;

2. 在代码中使用TListView类创建控件。

三、设置ListView控件的基本属性

1. 设置ViewStyle:决定ListView控件的外观样式,可以设置为vsIcon、vsSmallIcon、vsList、vsReport和vsReportStyles;

2. 设置ReadOnly属性:决定用户是否可以编辑ListView中的内容;

3. 设置Columns属性:可以通过添加TListColumn对象来定义ListView的列;

4. 设置ColumnClick属性:决定是否支持点击列标题进行排序;

5. 设置GridLines属性:决定是否显示网格线;

6. 设置HideSelection属性:决定是否隐藏选中项;

7. 设置MultiSelect属性:决定是否可以多选;

8. 设置ShowColumnHeaders属性:决定是否显示列标题栏;

9. 设置ViewStyle属性:决定ListView的外观样式。

四、添加数据到ListView控件

在C++Builder中自定义预览窗口

在C++Builder中自定义预览窗口

在C++Builder中自定义预览窗口

Borland C++Builder是基于C++语言的可视化编程环境,它提供了可重用组件库和一系列RAD设计工具,使得编程者只需用少量的手工代码就可以创建出高效的Windows应用程序,尤其是复杂的数据库访问应用程序,因此深受软件开发人员的喜爱。

在开发数据库访问应用程序时,会经常涉及到报表的打印问题。C++Builder中提供了Quick Report(快速报表)组件供编程人员设计报表。Quick Report是挪威的QuSoft AS公司专门为C++Builder设计的用于制作报表的一组控件,在C++Builder中关于Quick Report的帮助文档不是很详细。另外它与C++Builder的其他控件的风格也不太一致。直接使用Quick Report的报表预览功能总是不能达到令人满意的效果,因此有必要自定义快速报表的预览窗口。

设置预览窗口

新建工程,在Form1窗体上添加一个ToolBar控件,并在其上添加以下按钮:“打印”、“打印设置”、

“上一页”、“下一页”、“放大”、“缩小”和“关闭”。在Form1窗体上添加一个Panel控件,对齐方式设为alBottom,再在此Panel控件上添加一个ProgressBar控件(对齐方式设为alLeft)和一个Panel控件(Name 为Panel2,对齐方式设为alRight,BevelOuter设为bvLowered),这两个控件分别用来显示报表装载进度和其他提示信息。在Form1窗体上添加一个QRPreview控件,对齐方式设为alClient。

C++builder 窗体设计

C++builder 窗体设计

第4讲窗体设计

1 基本概念

C++ Builder应用程序的界面主要是通过窗体来设计的。窗体是C++ Builder构造程序的基础,是其它VCL组件的容器。在一定意义上,可以认为:程序在运行时的窗体就是窗口。

PS:

在Windows编程中,窗体和窗口是两个不同的概念。窗体只是窗口的一个子集,按钮、菜单、单选框等都是一个窗口。

Windows系统可以识别窗口,并为窗口的操作调用函数。当系统有事件发生,通知消息会发往相应的窗口,由窗口做出相应的响应。也就是说,系统的每个窗口均有相应的函数来处理窗口的所有事件。

PS:

在Windows系统中,有一个内核对象包含着每个应用程序所建立的窗口的列表,并赋给每个窗口一个唯一的值,这个值称为窗口的句柄(Handle)。

大部分应用程序都是通过窗体上的文字、图形图像、选择按钮以及菜单、工具条等控件和用户进行交互的。目前,随着多媒体和因特网的发展,窗体也顺应这种趋势,较以往的窗体有了一些改变。

窗体设计器是C++ Builder最实用、功能最强大的特征之一,它也是C++ Builder可视化开发环境的表现。使用窗体设计器,可以简单便捷地创建几乎所有的交互界面。

2 窗体的常用属性

在C++ Builder中,窗体是从TForm类继承的子类的对象,TForm类是VCL中的标准窗体类,它代表了一个空的窗体。TForm类有下列常用的属性(不要强制记忆,用熟了自然会记住。现在记不住怎么办?查帮助。):

●AlphaBlend属性

该属性用来设置窗体是否以半透明的方式来显示。

●AlphaBlendValue属性

用C++builder制作程序的启动窗口

用C++builder制作程序的启动窗口

制作程序的启动窗口

从File->new form新建一窗体,并设计好其外观。

窗体名为About,源文件命名为About.cpp。

在Projects->Options,将About窗体移至Available Forms

从View->Project Manager中打开工程文件的源文件Project1.cpp,加入如下红色代码:

//---------------------------------------------------------------------------

#include <vcl.h>

#include <About.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("Unit1.cpp", Form1);

USEFORM("About.cpp", Form2);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

DWORD lTime;

try

{

Application->Initialize();

Form2=new TForm2(Form2); //创建新窗体Form2

利用C Builder自定义Windows窗体“系统菜单”

利用C  Builder自定义Windows窗体“系统菜单”

利用C Builder自定义Windows窗体

“系统菜单”

导读:本文利用C Builder自定义Windows窗体“系统菜单”,仅供参考,如果觉得很不错,欢迎点评和分享。

安徽合肥智能机械研究所张建军

---------------------------------------------------------- 在开发Windows应用程序时,软件人员希望所编制的程序具有风格独特的用户界面,为此不惜采用一些占用系统内存资源颇多的第三方OCX控件,结果导致程序运行速度变慢或者打包后的安装程序体积太大的缺点。其实,如果我们仔细研究一下Windows提供的几百个WinAPI,就不难发现,通过直接调用API函数,发送、接收或者拦截系统消息等方法,同样可以实现在某些情况下只能依靠调用OCX才能达到的界面效果。

例如:为我们所熟知的屏幕抓图软件HyperSnap,在其强大的屏幕抓图功能背后,还具有一项比较特殊的界面效果。

通常情况下,当用鼠标点击一个Windows窗体左上角的Icon 时,所看到的系统菜单一般都是固定不变的。

HyperSnap的窗体改变了标准“系统菜单”,增加了多个新菜单项,并分别赋予它们不同的功能。其实这种效果的实现并不复

杂,主要通过调用GetSystemMenu、AppendMenu等API函数完成。下面,我们就以C Builder为例,讨论一下如何在自己的应用程序中实现类似HyperSnap的界面效果,并给出完整代码实例。

感谢阅读,希望能帮助您!

用C++Builder开发一个窗口信息读取程序

用C++Builder开发一个窗口信息读取程序

用C++ Builder开发一个窗口信息读取

程序

1前言

我们经常会遇到很多界面十分漂亮的软件,我们在惊叹其作者高超水平的同时,心中也不禁会想:自己怎样才能作出这样的界面呢 ?本文就从设计一个窗口信息读取程序入手,利用 C++Builder 适合于快速开发的特点,详细的介绍了其实现过程。有了本程序,我们可以很轻松的去读取别人程序窗口中的各种信息,从中获取我们想要的信息。

2相关知识

2.1句柄

要想在程序中实现对其他程序窗口信息的读取,必须先获得对该窗口的控制权,在具体编程中,我们可以通过获取目标窗口的句柄来实现对该窗口的各种操作。那么,何为句柄呢 ?从数据类型上看句柄是一个无符号整数, Win dows用它来标识窗体或其他对象,例如字体或位图。Win dows分配给每个窗口一个唯一的句柄,通过句柄操纵该窗口。通俗地说,句柄就像一把扇子的柄,一扇门的把手,只有通过柄和把手,我们才能顺利地控制扇子和门。同理,当要操纵某一个窗口时,需要先获取该窗口的句柄。获取窗口句柄的函数很多,较为常用的一个是WindowFromPoint,其用途是返回指定坐标下窗口的句柄。该函数有一个参数,原型如下:

HWND WindowFromPoint (

POINT Point // 指定的坐标 ( 位置)

);// 如果成功函数返回指定坐标下窗口的句柄,否则返回 NULL

通过以上函数,我们可以获得目标窗口的句柄,以便我们通过句柄对窗口进行操纵,从而读取目标窗口的各种信息。

2.2消息

消息(Message)就是指 Windows操作系统发给应用程序的一个通知,告诉应用程序某个事情发生了。从数据结构的角度看,消息是一个结构体,它包含了消息的类型标识符以及其他一些附加消息。这样,接受消息的对象就能根据这个消息的标识符知道系统中发生了什么事情,并利用其附加信息作出适当的反应。在本程序中,将使用到的消息有:

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++ builder 中关于窗体的一些操作(总在最前,遍历控件...)

一、让窗口总是在最前面

Form 的FormStyle属性设置为fsStayOnTop值。

二、动态调用窗体Form

在缺省情况下,由File/New Form生成添加入项目文件中的窗体都具有"Auto Create"(自动创建)的特性。即只要程序运行,该窗体就存在于内存中了,不管当前它是否被调用。具有这种特性的窗体一般适用于窗体属性比较固定、经常被调用的情况。其优点是速度快,缺点是占用内存。在实际程序设计中,会遇见大量类似对话框功能的窗体,它们用于显示状态或输入信息,仅须在程序中调用一下,完成其功能就行了,无需常驻内存。这时可以通过选择Project/Options/Forms,将"Auto--Create forms " 栏中相应的窗体, 如Form1,用" >" 键移动到"Available forms"栏中,并在程序需调用该窗体处,加入下列语句:TForm1 *myform=new TForm1(this);

myform- >ShowModal();

delete myform;

窗体Form1仅是在需要调用时才调入内存,调用完成后,即用delete清除出内存。这样可减少程序对内存资源的占用。

三、遍历窗体控件的方法

要访问或修改窗体上的控件,方法很简单,以TEdit为例子:

Edit1- >Text="";

Edit2- >Text="";

但如果窗体上有十来个像Edit1 这样的控件,需要进行相同的初始化,用上面的方法一个一个地进行,岂不麻烦!所以有必要掌握遍历窗体控件的方法。在介绍该方法之前,让我们先了解一下窗体Form 的Components 和Controls 属性。参见表一。

表一

属性类型说明

ComponentCount Int 目前Form上各类控件的总数

Components TCompont* 目前Form上指向所有控件的数组

ControlCount Int 目前Form上某一子区域上各类控件的总数Controls TControl* 目前Form上指向某一子区域上所有控件的数组

Form1的ComponentCount=6, 而Panel1的ControlCount=4.,

其中:数组对象

Components[0] Panel1

Components[1] Label1

Components[2] Edit1

Components[3] Label2

Components[4] Edit2

Components[5] Button1

数组对象

Controls[0] Label1

Controls[1] Edit1

Controls[2] Label2

Controls[3] Edit2

下面这段代码完成了对Panel1上所有TEdit 控件的遍历初始化。读者稍加修改,即可对其它控件进行遍历。这里有一个小技巧,我们把需要进行初始化的控件放置在了一Panel1上,与不需要初始化的控件区分开来,这样便于编程。

AnsiString namestring="TEdit";

for(int i=1;i< Panel1- > ControlCount;i++)

{

if(Panel1- > Controls[i]- > ClassNameIs(namestring))

{

TEdit *p=dynamic_cast < TEdit* > (Panel1- >Controls[i]);

P->Text="";

}

}

四、不规则窗口

1.在窗口定义中,加入HRGN hWndRgn;

2.在TForm::OnCreate()消息函数最后,加入下面的代码:

hWndRgn=::CreateEllipticRgn(0,0,Width,Height);

::SetWindowRgn(hWndRgn,TRUE);

3.设置TForm的属性为无标题,无边框。

4.编译连接应用程序,就可以看到一个椭圆形窗口。

五、MDI Form

1.Application->CreateForm(__classid(Tjjcginput), &jjcginput);

后不用在使用显示Form的语句就可以显示出来了。

2.form 的onclose 事件必须用下面语句释放空间:

void __fastcall TMDIChild::FormClose(TObject *Sender, TCloseAction &Action) {

Action = caFree;

}

相关文档
最新文档