如何控制其他程序窗体上的窗口控件

合集下载

Access数据库教程-窗体的设计

Access数据库教程-窗体的设计
本节将介绍应用窗体向导创建“源于单一数据集 的窗体”和“源于多重数据集的窗体”。所谓“源 于单一数据集的窗体”是指窗体的数据源是一个数 据表或据源是多个数据表或多个查询 的某种组合。
4.2.1 源于单一的数据集的窗体设计 经过以上的学习,我们了解了窗体的基本概念,下面
4. 3. 2 窗体设计视图工具栏
如图4-16所示的工具箱,是窗体设计的“命令中心”。拖动标 题栏可以移动工具箱,拖动边缘或角可以更改工具箱的外形。 还可以将工具移到工作区的顶部,像工具栏一样使之固定。 关闭工具箱的方法很多,可以单击工具箱右上角的“关闭” 按钮,也可以选择“视图”菜单中的“工具箱”命令,还可 以单击工具栏上的“工具箱”按钮。
本章导读
窗体又叫表单,是用户和Access 2002应用程 序之间的主要接口。数据库是用表来存储数据的, 一个完善的数据库应用程序,要使用户能够方便的 对数据表进行数据的输入,修改维护,以及显示输 出。利用Access窗体,能使用户可以轻松地完成数 据的各种处理,制定表中数据的多种显示输入输出 方法以及完成数据库的各种维护功能。可以说,创 建一个Access数据库应用程序系统来说,制作各种 各样的窗体是必不可少的。否则,它就不是一个完 整的数据库应用程序。
【例2】创建一个带有子窗体的主窗体,用于显示 “学生信息表”和“成绩表”中的数据,“成绩表” 表中的数据是一对多关系中的“多”端,而“学生 信息表”中的数据是此关系中的“一”端,每个学 号对应多门课程的成绩。
在这类窗体中,主窗体和子窗体彼此连接,使得 子窗体只显示与主窗体当前记录相关的记录。例如, 当主窗体显示学号为“9901001”时,在子窗体中就 只会显示学号“9901001”学生的各个学期的各科成 绩。
工具箱和窗体组成: ● 标题栏 显示当前编辑的窗体名称; ● 水平标尺和垂直标尺 用来标准控件的位置; ● 工具箱 是窗体设计工具的集合,通过拖放为窗体创

ACCESS2003教程之第六章 窗体的设计与高级应用

ACCESS2003教程之第六章 窗体的设计与高级应用

4. 在窗体中添加当前日期和时间 Access 2003提供了将系统时钟日期和时间显示在窗 体上的方法,添加日期和时间后,在窗体视图中,系统 时钟日期和时间将显示在窗体上。 【例6.7】 使用菜单命令为窗体添加当前日期和时 间。 5. 使用属性表设置控件属性 设置控件属性,方法同窗体属性设置,具体属性值 要根据控件的具体用途来确定。 【例6.8】 建立“学生信息处理”窗体,给出各控 件的具体使用及属性设置
6.2 创建窗体
在Access 2003中,创建窗体有两种方法: (1) 窗体向导 Access 2003提供了6种创建窗体的向导,如图6.4所 示,包括窗体向导、自动创建窗体:纵栏式、自动创建窗 体:表格式、自动创建窗体:数据表、图表向导和数据透 视表向导。 (2) 手动方式(又称窗体设计器) 使用人工方式创建窗体,需要创建窗体的每一个控 件,建立控件与数据源的联系,设置控件的属性等。
本章要点
1、Access 2003中窗体的构成与作用 2、利用向导创建窗体 3、在设计视图中如何设计窗体 4 4、窗体中控件对象的使用 5、窗体及控件的属性设置与事件的设计方法
6.1 窗体基础知识
窗体是Access 2003数据库中的一个非常重要的对象, 同时也是最复杂和灵活的对象。 通过窗体用户可以方便地输入数据、编辑数据、显示 统计和查询数据,是人机交互的窗口。窗体的设计最 能展示设计者的能力与个性,好的窗体结构能使用户 方便地进行数据库操作。此外,利用窗体可以将整个 应用程序组织起来,控制程序流程,形成一个完整的 应用系统。 6.1.1 窗体的概念与作用 窗体就是程序运行时的Windows窗口,在应用系统设计 时称为窗体。 窗体的主要特点与作用:
2. 控件属性 (1) 标签(label)控件 标题(Caption) 名称(Name) 其他常用的格式属性: 高度(Height) 宽度(Width) 背景样式(BackStyle) 背景颜色(BackColor) 显示文本字体(FontBold) 字体大小(FontSize) 字体颜色(ForeColor) 是否可见(Visible)等。

weifenluo控件 窗口停靠的原理 -回复

weifenluo控件 窗口停靠的原理 -回复

weifenluo控件窗口停靠的原理-回复标题:【WeifenLuo控件:窗口停靠的原理详解】一、引言WeifenLuo.WinFormsUI.Docking,简称DockPanel Suite,是由C#编写的.NET开源库,为Windows窗体应用程序提供了一套强大的停靠功能。

本文将深入剖析WeifenLuo控件中窗口停靠的原理,一步步揭示其背后的设计逻辑与实现机制。

二、基本概念与组件在WeifenLuo控件库中,核心组件是DockPanel和DockControlPane。

DockPanel是所有停靠窗体的容器,而DockControlPane则是窗体实际停靠的位置,可以理解为停靠区域或者停靠面板。

1. DockPanel:作为顶级容器,DockPanel负责管理所有的DockControlPane和停靠窗体,控制它们的布局和行为。

它允许窗体在它的边缘(上、下、左、右)以及内部(填充)进行停靠,并且支持浮动窗口和自动隐藏的功能。

2. DockControlPane:DockControlPane是窗体停靠的具体位置,每个DockControlPane内只能有一个窗体。

当窗体被拖动到DockPanel的不同位置时,会动态创建或调整DockControlPane来适应新的布局需求。

三、窗口停靠过程解析1. 初始化停靠:首先,窗体需要设置CanDock属性为true以启用停靠功能,然后通过DockPanel.DockStyle属性将其添加到DockPanel中并指定初始停靠位置。

例如,如果希望窗体停靠在主界面底部,则可设置.DockStyle为DockBottom。

2. 拖动停靠:在运行时,用户可以通过鼠标拖拽窗体标题栏改变其停靠位置。

当窗体被拖动至DockPanel边界时,DockPanel会检测到这一动作并创建或调整相应的DockControlPane,同时更新窗体的DockControl.DockStyle属性。

C# 第6章 窗体、控件和组件

C# 第6章 窗体、控件和组件

窗体的常用方法和事件
方法和事件名 说明
13
Close()方法
Hide()方法 Show()方法 Load事件
使窗体关闭,并释放资源;
使窗体隐藏,并不释放资源; 显示窗体; 加载窗体时处理的事件;
Click事件
Closing、Closed事件 GetFocus事件 Activated事件
鼠标单击窗体时处理的事件;
它还只是一个TextBox类型的变量而已,如果在InitializeCompon ent( )之前调用这个TextBox的属性或方法,就会出错。
6.1.3 窗体常用的属性
属性 Name BackColor ForeColor 含义 窗体的名称,代码中通过该属性来访 问窗体 窗体的背景色 窗体上文本的前景色 注意
C#中的InitializeComponent()方法
注意: InitializeComponent( )方法写在前面和后面是有区别的。
23
InitializeComponent( )方法是用来初始化窗体组件的,在Initializ
eComponent之前,窗体的各个控件还没有进行初始化,比如说
窗体上有一个TextBoxUserName,在InitializeComponent( )之前
19
20
6.1.2 窗体的创建、显示与隐藏
【例6-1】演示窗体的基本用法以及如何显示和关闭窗体。 部分运行效果如图:
C#中的InitializeComponent()方法
在每一个窗体生成的时候,都会针对于当前的窗体定义Initi alizeComponent()方法,该方法实际上是由系统生成的对于
3、如何隐藏一个打开的窗体 (1)隐藏当前窗体:this.Hide(); (2)隐藏其它窗体:Application.OpenForms["Form1"].H ide();

Qt Creator 窗体控件自适应窗口大小布局

Qt Creator 窗体控件自适应窗口大小布局

Qt Creator 窗体控件自适应窗口大小布局常见的软件窗口大小改变(最大化、手动改变时)需要窗口的部件能够自适应布局,而在Qt的应用程序界面设计中,对于像我一样的初学者如何实现窗口自适应调整还是要绕点弯路的。

网上百度了很多,多数说的很含糊,还有很多是用程序实现的,既然已经有Qt Creator那么高集成度的工具了,我还是倾向于直接在Qt Creator中通过可视化配置的方式完成,一是所见即所得,而是效率要高不少。

Qt中如果想实现窗体内空间随着窗体大小调整,必须使用布局管理,常用的布局管理有QHBoxLayout、QVBoxLayout、QGridLayout,空的地方使用spacer 控件进行填充,因此首先将窗体空间使用布局管理典型应用如下图所示。

我这里使用QGridLayout,按住Ctrl多选需要布局的窗体控件,右键-布局-栅格化局,根据需要进行调整。

要想是控件根据窗体进行调整,最为重要的一点就是设置窗口部件的大小策略,各控件均有这一项设置,如下图所示。

这部分具体的参数解释摘录如下:结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。

控件的sizePolicy说明控件在布局管理中的缩放方式。

Qt提供的控件都有一个合理的缺省sizePolicy,但是这个缺省值有时不能适合所有的布局,开发人员经常需要改变窗体上的某些控件的sizePolicy。

一个QSizePolicy的所有变量对水平方向和垂直方向都适用。

下面列举了一些最长用的值:A. Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。

B. Minimum:控件的sizeHint为控件的最小尺寸。

控件不能小于这个sizeHint,但是可以放大。

C. Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。

D. Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小E. Expandint:控件可以自行增大或者缩小注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)所以对于需要根据窗口大小对应改变的部件我这里就设置为Expandint。

窗体的基本类型

窗体的基本类型

1.快速创建带子窗体的窗体 .
【例5-14】 创建“学生成绩”窗体,如图560所示效果。
2.子窗体的源对象为窗体 .
【例5-15】 使用已经存在的窗体,创建“学 生成绩”窗体。 说明:以窗体作为子窗体源对象时,该窗体 的“默认视图”要设置为“数据表”;如不 修改,则子窗体将如一般窗体的纵栏式显示, 一次只显示一笔记录。
快速创建窗体
窗体是最常见的操作界面,本节介绍如何在 Access数据库中,以向导及其他方式,创建 窗体。
自动创建窗体
【例5-1】 使用“自动创建窗体”创建如图56所示的“学生”(自动创建)窗体。
通过文件另存创建窗体
可以通过“另存为”的方法,将现有的表或 查询保存为窗体形式。 【例5-2】 通过将文件另存来创建简单窗体, 创建结果同【例5-1】的结果。
快速自定义窗体
【例5-4】 使用“设计视图”创建“教师基本 情况”窗体,如图5-12所示。
使用设计视图创建窗体
窗体的视图分为设计视图、窗体视图、数据 表视图、数据透视表视图和数据透视图视图。 在设计视图中可创建和修改一个窗体,在窗 体视图下可运行窗体并显示结果。另外3种视 图,是针对窗体中源于表或查询数据的相应 的显示方式。 要想在设计视图中设计窗体,就需了解设计 视图中窗体的结构组成。
3.修改子窗体 .
【例5-16】 修改“学生成绩”窗体的子窗体 部分。
4.在主窗体引用子窗体计算型控件 .
【例5-17】 在“学生成绩”窗体的主窗体引 用子窗体的计算型控件,如图5-72所示。
数据透视表及图
数据透视表及数据透视图均有分析功能,将 数据分析后显示为易读、易懂的表及图,通 过表及图,可一目了然数据分析结果。
第 5章 窗

Windows窗体与控件(一)

Windows窗体与控件(一)

创建应用程序的操作界面
5. 设置所有控件的Tab键顺序索引
Tab键顺序是指当用户按下Tab键时,焦点在控件间移动的顺序。 每个窗体都有自己的Tab键顺序,每个控件在窗体上也都有唯 一的Tab键顺序索引。默认状态下,控件在窗体上的Tab键顺序 索引与建立控件的顺序一致。如果要设置窗体上控件的Tab键 顺序索引,可以分别对每个控件设置其TabIndex属性,也可以 集中设置所有控件的Tab键顺序索引。 • 要集中设置所有控件的Tab键顺序索引,可以选择菜单【视 图|Tab键顺序】命令。如果需要改变多个控件的Tab键顺序索 引,按照想设置的顺序依次单击各个控件。【Tab键顺序】命 令是一个切换命令,因此设置好所有控件的Tab键顺序索引之 后,再次选择【Tab键顺序】命令即可结束Tab键顺序索引的设 置。
LOGO
《Visual C#.NET程序设计教程 》
Windows窗体与控件
内容简介
• Windows窗体是以.NET Framework为基础的一个新平台,主 要用来开发Windows应用程序。一个Windows应用程序通常由 窗体对象和控件对象构成,即使开发一个最简单的Windows 应用程序,也必须了解窗体对象和控件对象的使用。 • 先主要介绍Windows窗体的结构和常用属性、方法与事件, 以及Label、LinkLabel、TextBox、Button几种常用控件的 使用。
2. 设置标签的文本
• 在Label中显示文本,使用Text属性。首先要选择Label控件, 然后在属性窗口中设置该属性为某个字符串即可。 • Label控件中的文本默认的排列方式为靠上左对齐,通过设 置TextAlign属性可以改变排列方式。TextAlign属性值是 ContentAlignment枚举类型,共有9个枚举值,默认值是 TopLeft。如果设置TextAlign为TopCenter,则靠上居中。

delphi中在自己的窗体上嵌入其它程序

delphi中在自己的窗体上嵌入其它程序

delphi中在自己的窗体上嵌入其它程序基于Delphi的融合DLL中的窗体博客分类:•delphiDelphiWindows编程基于Delphi的融合DLL中的窗口摘要:提出了一种简单的方法将DLL中的窗口融合(嵌入)到其他应用程序或DLL的窗口中,使用本方法可以简便地实现具有强扩展性和升级能力的软件系统。

1 引言在开发一个大型通用控制系统时曾遇到这么一个问题:该系统软件包由若干个可执行文件和动态链接库组成,因为扩展性和兼容性的要求,需要将系统划分为若干个可执行文件和动态链接库,并且在大部分DLL中封装各自的操作界面,在调用DLL时将其中包含的部分界面嵌入地显示在主界面的某个区域或某个窗口内,与主界面的其他部分浑然一体。

这样主程序与DLL在功能操作上各司其职,在外部界面上又彼此交融,使用户可以通过增加和修改DLL来实现对系统内部、外部的扩展和升级;同时因为DLL的跨语言特性,内部包含操作界面的DLL可以更为方便地在以后的不同工作、不同语言环境中更好地重复使用。

这一问题的应用较为广泛,但没有充分的资料来帮助解决,经过不断的试验,笔者将初步体会总结出来,用以抛砖引玉。

本文中涉及的主程序和DLL都是在Delphi5.0下实现的,但因为其中所依赖的基础还是Windows本身的窗口机制,所以对于其他的语言平台也有实际意义。

在Delphi中如何创建DLL及输出DLL中的函数有较多资料进行过介绍,在本文中不再赘述,本文只针对DLL中的窗口部分做重点介绍。

2 DLL中自带窗口的创建和显示DLL和普通EXE一样,可以自带窗口,用Delphi设计包含窗口的DLL较其他语言更为方便。

在Delphi的DLL工程中,窗口的生成和编程与普通的EXE工程基本相同,但与EXE文件不同的是:在Delphi的EXE工程中所包含的窗口是自动创建的,而DLL工程中所包含的窗口需要显示创建。

在通常的应用中,DLL将所包含的窗口的创建和显示函数(或过程)输出,由宿主程序根据情况调用将DLL中的窗口显示出来(如点击宿主程序中的某个按钮时显示DLL中的窗口),其窗口创建和显示的过程如下:首先,创建一个DLL工程,并新建一个名为DllForm的Form,可以在该Form上放置任何控件。

Access窗体的操作

Access窗体的操作

图6-9 纵栏式窗体
纵栏式窗体还可以通过选择需要创建窗体的对象“清华 出版社”后,单击工具栏中如图6-10所示,“自动窗体” 创建而成。
图6-10 用“自动窗体”创建窗体
2.表格式窗体 以表格的形式显示数据,其优势是可以同时显示多条记 录,不但具有窗体的功能,而且体现了数据表多记录显示的 特点,如图6-11所示。
1.2 窗体的结构 窗体一般由五部分组成,每个部分称为一个节,其结构 如图6-2所示。
图6-2 窗体设计视图
页眉和页脚总是成对出现。其中窗体页眉主要用来显示 窗体标题、窗体使用说明,打开相关的窗体,或运行其他任 务的命令按钮等,出现在屏幕的顶部或打印时首页的顶部。 窗体页脚显示窗体、命令按钮或接受输入的非绑定控件 等对象的使用说明,即一些总结性文字,出现在屏幕的底部 或最后一张打印页的最后。 页面页眉在第一页的顶部显示字段的标题、页号、日前 时间等,在每个打印页的顶部显示。 页面页脚显示诸如日期、页号以及其他信息。在每个打 印页的底部显示。 主体是窗体的核心部分,用于显示记录个字段的详细内 容。在此可以将各种控件有机地组合在一起,完成各种各样 的功能。 “节”具有属性,在某个节上单击鼠标右键,选择“属 性”命令,可查看所选节的属性。
BACK
2 创建窗体
2.1 用向导创建窗体 Access 2003提供了几种向导帮助创建窗体,选择不 同的向导,可以建立不同风格的窗体。向导会通过询问一 步步收集数据,并根据输入建立窗体,对于初学者来说是 个好方法。利用向导创建好窗体后,可以在窗体视图中加 以修改。 使用窗体向导能够基于一个或多个表或查询来创建窗 体。向导会要求输入所需记录源、字段、版式和格式信息, 根据用户的大案创建窗体。
图6-28 工具栏
3.2 记录的编辑 利用窗体可以很方便地维护所基于的源表或查询的记录, 这些维护操作包括:向窗体源表或查询中添加新记录、删除 记录、修改记录等。 1.定位记录 要修改窗体所基于的表或查询的数据,首先要定位到相 应的记录,然后才能对数据进行操作。在窗体视图中,窗体 的左下角有一个工具条,可以称之为记录定位工具,如图629所示。

menustrip控件用法

menustrip控件用法

menustrip控件用法什么是menustrip控件menustrip控件是一个用于创建菜单栏的工具。

菜单栏是指在应用程序窗口的顶部显示的水平导航栏,通常用于显示应用程序的各种功能和选项。

menustrip控件可以包含多个菜单项,每个菜单项都可以包含子菜单项或者是与之关联的操作。

通过点击菜单项,用户可以选择执行相应的操作或打开子菜单。

menustrip控件通常用于创建简洁明了的用户界面,使用户可以方便地访问和操作应用程序的功能。

menustrip控件的基本用法下面介绍menustrip控件的基本用法。

添加menustrip控件在Windows窗体应用程序中,要使用menustrip控件,首先需要将它添加到窗体中。

1.打开Visual Studio,创建一个新的Windows窗体应用程序项目。

2.在窗体设计器中,找到工具箱中的”MenuStrip”控件,并将其拖放到窗体上。

添加菜单项menustrip控件中可以添加多个菜单项,每个菜单项可以包含子菜单项或执行操作。

1.在menustrip控件上,右键单击并选择”Add Menu Item”。

2.输入菜单项的文本,例如”File”,然后按下回车键。

3.再次右键单击menustrip控件,并选择”Add Menu Item”。

4.输入另一个菜单项的文本,例如”Edit”,然后按下回车键。

添加子菜单项对于每个菜单项,我们可以添加子菜单项以创建多层菜单结构。

1.选中一个菜单项,例如”File”。

2.右键单击该菜单项,并选择”Add Menu Item”。

3.输入该子菜单项的文本,例如”New”,然后按下回车键。

关联操作菜单项可以关联一个操作,当用户选择该菜单项时,执行相应的操作。

操作可以是打开一个窗体、执行一个方法等。

1.选中一个菜单项,例如”New”。

2.在属性窗口中,找到”Click”事件,并双击该事件。

3.在事件处理程序中,编写执行的操作代码。

以下是一个示例代码:private void newToolStripMenuItem_Click(object sender, EventArgs e){// 打开一个新窗体或执行其他操作}menustrip控件的高级用法除了基本的菜单创建和操作关联,menustrip控件还支持许多高级用法。

vb6 操作mdi子窗体的方法

vb6 操作mdi子窗体的方法

VB6(Visual Basic 6.0)是微软推出的一种编程语言,它具有结构清晰、易学易用的特点,因此在开发Windows应用程序时被广泛使用。

MDI(Multiple Document Interface)是VB6中常用的一种界面类型,它允许用户在一个父窗体中打开多个子窗体,并且可以方便地在这些子窗体之间进行切换和管理。

在MDI应用程序中操作子窗体是非常常见的需求,如何在VB6中操作MDI子窗体呢?接下来,我们将介绍一些操作MDI子窗体的方法。

一、创建MDI子窗体在VB6中创建MDI子窗体非常简单,只需要在MDI父窗体中添加一个新的子窗体即可。

我们需要在VB6中创建一个MDI项目,然后在MDI父窗体的工具栏中点击“新建子窗体”按钮或者通过编程方式调用"Load"方法来创建一个新的MDI子窗体。

二、操作MDI子窗体的属性和方法在VB6中,我们可以通过操作MDI子窗体的属性和方法来实现对子窗体的管理和控制。

通过设置MDI子窗体的Visible属性可以控制子窗体的显示和隐藏;通过设置MDI子窗体的Title属性可以修改子窗体的标题;通过调用MDI子窗体的Close方法可以关闭子窗体等等。

三、切换和激活MDI子窗体在MDI应用程序中,切换和激活子窗体是非常常见的操作。

在VB6中,我们可以通过调用MDI父窗体的ActiveForm属性来获取当前激活的子窗体,并通过调用MDI子窗体的Activate方法来激活指定的子窗体。

另外,我们还可以通过在MDI父窗体的窗口菜单或者工具栏中添加相应的菜单项或按钮来实现切换和激活子窗体的功能。

四、动态创建和销毁MDI子窗体除了在设计时创建MDI子窗体外,我们还可以在运行时动态地创建和销毁MDI子窗体。

在VB6中,我们可以通过编程方式调用"Load"方法来动态创建新的MDI子窗体,然后通过调用MDI子窗体的Unload 方法来销毁不再需要的子窗体。

vba控件常规使用UserForm 基础

vba控件常规使用UserForm 基础

1. Excel中创建新工作簿。

2. 在工具菜单,指向宏,然后单击VisualBasic编辑器。

3. 在插入菜单上,单击要在工作簿中插入UserFormUserForm。

4. 双击以显示代码窗口对于UserFormUserForm。

模块,中键入如下代码:PrivateSubUserForm_Click()Me.Height=Int(Rnd*500)Me.Width=Int(Rnd*750)EndSubPrivateSubUserForm_Initialize()Me.Caption="EventsEventsEvents!"Me.BackColor=RGB(10,25,100)EndSubQueryClose事件UserForm是从内存中卸载之前发生。

使用QueryClose事件CloseModeCloseMode参数来确定如何UserForm关闭。

vbFormControlMenu值为CloseModeCloseMode参数表示时,单击关闭按钮。

要保持活动,UserForm将Cancel取消对QueryClose事件参数为True。

要使用QueryClose事件来防止UserForm关闭通过关闭按钮,请按照下列步骤:1. Excel中创建新工作簿。

2. 在工具菜单,指向宏,然后单击VisualBasic编辑器。

3. 在插入菜单上,单击要在工作簿中插入UserFormUserForm。

4. 将CommandButton控件添加到UserForm。

.Font.Bold=True'Setthefontcolortoblue..ForeColor=RGB(0,0,255)EndWithEndSub8. 在运行菜单上,单击运行子过程/用户窗体。

9. 单击CommandButton。

文本粗TimesNewRoman用字体大小是14中Label控件上显示"Thisis标签示例1"。

Delphi查找标题已知的窗口句柄,遍历窗口控件句柄(转)

Delphi查找标题已知的窗口句柄,遍历窗口控件句柄(转)

Delphi查找标题已知的窗⼝句柄,遍历窗⼝控件句柄(转)⽤我的⽅法来控制其他程序窗体上的窗⼝控件,必须先了解什么是回调函数。

我的理解是这样的:回调函数写出来不是⾃⼰的程序去调⽤的,反⽽是让其他的东西去调⽤,⽐如windows操作系统,⽐如其他的程序等等之类的。

但是什么时候被调⽤却不知道了。

回调函数⼀般是按照调⽤者的要求定义好参数和返回值的类型,你向调⽤者提供你的回调函数的⼊⼝地址,然后调⽤者有什么事件发⽣的时候就可以随时按照你提供的地址调⽤这个函数通知你,并按照预先规定好的形式传递参数。

所以很多⼈打⽐⽅,说回调函数还真有点像您随⾝带的BP机:告诉别⼈号码,在它有事情时 Call您!所以⼀个回调函数写出来之后,⼀定有个注册的动作,就是告诉调⽤者,你怎么样找到我写的函数。

某些Windows API 函数会要求以回调函数地址作为其参数之⼀,例如SetTimer 、LineDDA 、EnumObjects,以及我们下⾯要⽤到的EnumWindows。

在Delphi⾥声明⼀个回调函数的格式很简单,例如:function EnumWindowsProc(AhWnd:LongInt;lParam:LongInt):boolean;stdcall;⾸先是函数名称可以随便乱取,但函数参数的类型⼀般不得乱来,其顺序,数据类型等都有规定的,因为这些都是让其他程序调⽤的,他们已经规定好了的,但参数名称可以随便乱叫。

注意后⾯⼀定要带上“stdcall”,stdcall是标准调⽤,也就是说采⽤标准windows参数传递⽅式来调⽤函数。

编写函数体就很简单了,利⽤传递过来的参数就可以了,只要记住,这些参数是别⼈送给你的,你只要知道这些参数代表了什么意思。

再看个向调⽤者注册回调函数⼊⼝地址的函数。

function EnumWindows(lpEnumFunc: TFNWndEnumProc; lParam: LPARAM): BOOL; stdcall;TFNWndEnumProc其实就是指针类型。

VB 控件随窗口大小改变

VB 控件随窗口大小改变

VB 控件随窗口大小改变一个好的Windows应用程序的界面,自适应窗体尺寸改变的能力是必不可少的。

笔者在这方面做了一些探讨,希望能对VB编程爱好者提供一些启发和帮助。

凡用过VB编写Windows应用程序的用户都可能有过这样的经历:当一个经过精心设计的应用程序运行后,如果用户重新调整了窗体的大小,则控制在窗体中的相对位置、控件与窗体的大小比例均会严重失调,程序的界面变得面目全非。

1、按照窗体尺寸缩放比例自动调整控件在窗体中的相对位置控件在窗体中的位置由该控件的Left和Top属性确定。

程序启动后如果窗体被缩放,只要按照缩放的比例来重新调整窗体内各控件的Left和Top属性值即可。

所以根据上面介绍的原理,在窗体被缩放之后,只要按照下面的关系来设置控件的Left和Top属性值即可。

调整后控件的Left属性值=(控件原Left属性值/窗体原Left属性值)*窗体.ScaleWidth;调整后控件的Top属性值=(控件原Top属性值/窗体原Top属性值)*窗体.ScaleHeight;2、按照窗体尺寸缩放比例自动调整控件的大小窗体和控件的大小由窗体和控件的Width属性和Height属性确定。

所以当用户界面设计完成之后,窗体及其内部的各控件的Width, Height属性便随之确定下来;从而窗体相对于每一个控件,它们的宽度之比、高度之比均被确定。

如果窗体Forml内的一个文本框Text1的宽(即Text1的Width属性值)为3610,高度(即Text1的Height属性值)为1935;而窗体Form1的上述两个值分别为4890和3615,则它们的宽度之比和高度之比分别为:361014890、193513615。

当用户在程序启动后调整了窗体的尺寸,窗体的宽度和高度将分别为Form1.ScaleWidth,Form1.ScaleHeight;此时应该按上述比例来调整文本框Textl的的高度和宽度值。

即:(调整后的Text1的Width属性值)/( Form1.ScaleWidth)=3610/4890;(调整后的Text1的Height属性值)/(Form1.Scale-Height)=1935/3615;所以调整后的Text1的Width属性值=(3610/4890)* Form1.ScaleWidth;调整后的Text1的Height属性值=(1935/3615) * Form1.ScaleHeight;对于一般控件来说,应该有:调整后的控件的Width属性值=(控件原Width属性值/窗体原Width属性值)*窗体.ScaleWidth调整后的控件的Height属性值=(控件原Height属性值/窗体值/窗体原Height属性值)*窗体.ScaleHeight按照上述方法确定窗体缩放后控件Width和Height属性值,则当窗体尺寸被调整后,控件的大小将按比例得到相应的调整。

C_教程_第6章_窗体、控件和组件

C_教程_第6章_窗体、控件和组件

窗体的创建、显示与隐藏( 6.1.2 窗体的创建、显示与隐藏(续)
3、如何隐藏一个打开的窗体 使用Form2 );创建的窗体 (1)fm.Hide( ); // 使用Form2 fm = new Form2( );创建的窗体 隐藏当前窗体: (2)隐藏当前窗体:this.Hide( ); 隐藏其它窗体: (3)隐藏其它窗体:Application.OpenForms["Form1"].Hide( ); 只能隐藏“无模式”窗体。 注:只能隐藏“无模式”窗体。 4、如何重新显示隐藏的窗体 使用Form2 );创建的窗体 (1)fm.Show( ); // 使用Form2 fm = new Form2( );创建的窗体 显示当前窗体: (2)显示当前窗体:this.Show( ); 显示其它窗体: (3)显示其它窗体:Application.OpenForms["Form1"].Show( ); 5、退出应用程序 Application.Exit( ); 执行该语句后,停止本应用程序的消息循环, 执行该语句后,停止本应用程序的消息循环,关闭本应用程序所有 打开的窗体。 打开的窗体。
窗体的创建、显示与隐藏( 6.1.2 窗体的创建、显示与隐藏(续)
6、关闭一个窗体后再显示另一个窗体 static void Main( ) { …. . //创建欢迎窗体 //创建欢迎窗体 WelcomeForm fm = new WelcomeForm( ); //以 模式” //以“模式”窗体显示 fm.ShowDialog( ); //运行主窗体 运行主窗体MainForm //运行主窗体MainForm Application.Run(new MainForm( )); }
61窗体与对话框62控件共有的基本操作63容器类控件和组件64文本操作类控件65选择操作类控件66图像操作类控件和组件67菜单工具栏与状态栏68视图操作类控件69其他常用控件1窗体应用程序的启动和停止使用application类提供的静态方法来启动停止应用程序

AutoCAD可视化对话框开发工具OpenDCL使用简介

AutoCAD可视化对话框开发工具OpenDCL使用简介

文章编号:1672-8262(2009)06-87-03 中图分类号:P209 文献标识码:BAutoCAD 可视化对话框开发工具OpenDCL 使用简介兰度** 收稿日期:2009 02 12作者简介:兰度(1977 ),男,工程师,主要从事城市测绘技术及AutoCAD 应用开发工作。

(南宁市勘测院,广西南宁 530001)摘 要:Opendcl 是A utoCAD 可视化对话框界面开发的第三方工具,适用于L isp /V li sp 开发环境,使用简单,功能强大,使您通过L ISP /V li sp 就能充分利用W i ndow s 资源,制作出漂亮实用的对话框界面;本文通过简单实例介绍在V isuale L isp 开发环境下,利用O pendcl 可视化对话框开发工具进行A utoCAD 对话框开发的方法。

关键词:Au t oC A D ;L i sp /vlisp ;DCL;O penDCL;O b j ect DCL 可视化对话框1 引 言对一般的Auto CAD 用户来说,Lisp /V lisp 是进行Au -toC AD 二次开发的首选语言。

但Lisp /V lisp 使用的对话框编程语言DCL 和PDB 没有一个可视化的编程环境,主要依靠开发者手工写入代码,且与Lisp /V lisp 的数据交换和相互控制实现起来比较麻烦,难于掌握。

而Ope nDCL 是一款可视化的对话框制作工具,并且是一款完全免费的开源软件,起源于3r d Day 软件公司著名的商业软件Object D CL ,两者都是同一个作者开发出来的,功能基本一样,他们的目标正是要取代原有的DCL 语言。

2 OpenDCL 软件的下载和安装2 1 OpenDCL 的下载你可以登陆网址:http ://sourceforge .net/pro j e cts /opendcl 或者http ://opendc.l co m /wordpress/免费下载OpenDCL 软件。

delphi tchecklistbox使用方法

delphi tchecklistbox使用方法

delphi tchecklistbox使用方法(最新版3篇)目录(篇1)1.Delphi TCheckListBox 简介2.Delphi TCheckListBox 的基本使用方法3.Delphi TCheckListBox 的常用事件4.Delphi TCheckListBox 的优缺点正文(篇1)【Delphi TCheckListBox 简介】Delphi TCheckListBox 是一款常用的第三代编程语言 Delphi 中的控件,它是一个带有复选框的列表框,允许用户选择一个或多个项目。

TCheckListBox 控件广泛应用于各种 Delphi 应用程序的开发中,如数据库应用程序、桌面应用程序等。

【Delphi TCheckListBox 的基本使用方法】1.在 Delphi 设计器中,选择"Components"菜单下的"Check List Box",将 TCheckListBox 控件添加到窗体上。

2.在"Object Inspector"窗口中,可以设置 TCheckListBox 的属性,如 Name、Caption 等。

3.在代码中,可以通过 TCheckListBox 的 Name 属性获取该控件的引用,并进行相关操作。

【Delphi TCheckListBox 的常用事件】1.Click 事件:当用户单击 TCheckListBox 中的某个复选框时,触发 Click 事件。

2.DblClick 事件:当用户双击 TCheckListBox 中的某个复选框时,触发 DblClick 事件。

3.Change 事件:当用户选择或取消选择 TCheckListBox 中的某个复选框时,触发 Change 事件。

【Delphi TCheckListBox 的优缺点】优点:1.TCheckListBox 具有直观的用户界面,方便用户选择多个项目。

帮助提示(Hint)

帮助提示(Hint)

Delphi 使用帮助提示(Hint)制作简单即时的系统帮助使用Windows应用程序,用户可以把鼠标置于程序的某个部件上,如按钮,工具栏等。

鼠标在部件上停留超过一定时间后,应用程序将会显示一个弹出窗口,里面有部件名称和概述。

这种帮助简单即时,特别适用于工具栏或按钮、输入框等可视控件较多的场合。

1、利用Hint特性提供弹出式帮助property Hint: string;该特性用于设置帮助提示框中的文本字符串。

Hint特性应用于所有控件,包括应用程序控件和菜单控件。

因为应用程序部件不是可视部件,因此不能在Object Inspector 窗口中定义Hint特性。

但可以在定义可视控件的Hint特性时同时定义应用程序控件的Hint特性,定义时只需用“|”字符分开。

另外需要把应用程序的ShowHint特性设为True,把需要显示帮助提示的控件的ShowHint 特性设为True,ParentShowHint特性设为False。

这样在程序运行时,只要把鼠标在需要帮助的控件上方停留500毫秒就会出现在Hint特性中设定的提示信息。

2、控制提示窗口的开关帮助提示在应用程序的使用初期会带来很多方便,但是在使用了一定时间后一旦用户掌握了有关常用控件的功能后,随着鼠标的移动反复提示帮助反而带来不方便,因此用户可能提出关闭部分常用控件提示功能或全部关闭。

为此Delphi提供了两个特性来让开发者和用户无论是在设计期间还是运行期间都可以灵活的开关帮助提示窗口。

下面先看以下控制开关帮助提示的特性是如何声明的。

ShowHint特性:property ShowHint: Boolean;该特性为True时显示Hint特性中设置的提示信息,该特性为False时不显示提示信息。

ParentShowHint特性:property ParentShowHint: Boolean;该特性为True时,该控件的ShowHint特性继承父控件的ShowHint特性,该ParentShowHint为False时,该控件的ShowHint特性不受父控件ShowHint 特性的影响。

delphi 代码中设置控件的方法 -回复

delphi 代码中设置控件的方法 -回复

delphi 代码中设置控件的方法-回复Delphi代码中设置控件的方法在Delphi中,设置控件是编写桌面应用程序的基本任务之一。

通过设置控件的属性,可以实现对其外观、大小、位置、行为和其他一些与用户交互相关的方面进行控制。

本文将一步一步地解释Delphi中设置控件的方法。

第一步:添加控件到窗体首先,在Delphi中,我们需要在窗体上添加控件。

这可以通过拖放控件到窗体设计视图上或者通过编程方式创建控件来实现。

拖放方式是最常用的方法。

在Delphi的窗体设计视图中,从工具箱中选择所需的控件,将鼠标拖动到窗体上,并释放鼠标按钮。

这将在窗体上创建一个新的控件实例。

编程方式创建控件需要用到Delphi的组件对象模型(Component Object Model, COM)。

首先,需要选择所需的控件类型,然后使用代码创建该控件的实例。

第二步:设置控件属性添加控件到窗体后,可以开始设置控件的属性。

在Delphi中,可以通过属性编辑器或代码来设置控件的属性。

使用属性编辑器属性编辑器是Delphi中设置控件属性的常用方法。

可以在组件面板中选中相应的控件,然后在对象检查器面板中查看和编辑控件的属性。

属性可以按字母顺序或按类别进行排序,以便更轻松地找到所需的属性。

使用代码通过编程方式设置控件属性可以使用Delphi的对象模型。

可以在代码中使用控件实例的属性或方法来设置相应的属性。

以下是一个示例,演示了如何以代码方式设置一个编辑框的背景颜色:pascalEdit1.Color := clYellow;本示例将编辑框(Edit1)的背景颜色设置为黄色。

以此方式,通过为控件实例调用属性和方法,可以对控件的各个属性进行设置。

例如,可以设置控件的字体、大小、位置、可见性等等。

第三步:设置控件事件处理程序除了设置控件的属性外,还可以为其添加事件处理程序,以响应用户的交互。

Delphi中的事件处理程序是一个特殊的方法,用于处理控件与用户之间的交互。

易语言分组框作用

易语言分组框作用

易语言分组框作用易语言是一款运行在Windows平台上的编程语言,开发人员使用它可以快速地开发Windows平台上的应用程序。

易语言的编程风格比较简单易懂,语法比较接近人类语言,因此易语言非常适合初学者使用。

在易语言中,有许多控件可以使用,其中之一就是“分组框”。

在下面,我将详细介绍一下易语言分组框的作用。

1.分组框基本介绍分组框也叫做GroupBox,是一种在窗体上用来组织和管理其他控件的控件。

分组框可以让窗体的布局更加清晰,有利于用户对界面进行理解和操作。

在易语言中,分组框的使用非常简单,只需要在窗口设计器中把分组框控件拖动到窗口上即可。

2.分组框的特点①美观实用:分组框能够为一个窗体上的一系列相关控件提供一个容器,使这些控件更加整齐、美观。

它可以为用户提供更加明确、易于理解的视觉提示。

例如:在一个大型的表单中,可以使用多个分组框来将相关的控件分组显示。

②简单易用:在易语言中使用分组框非常方便,只需要将分组框控件从工具箱中拖动到窗口上即可。

而且,易语言中还提供了许多分组框的属性可以实现对分组框的进一步设置,例如设置分组框的大小、位置、文本内容等。

③灵活性强:分组框可以包含任意数量和类型的控件,可以将分组框分组内的控件按照需要进行布局调整。

分组框可以随时调整大小和位置,这使得它们可以适应各种不同的窗体设计需求。

④便于管理:分组框可以对类似的控件进行分组,为开发人员提供更好的管理方式。

使用分组框可以将相关的控件分组显示,使得开发人员在维护和修改代码时更加方便。

3.易语言分组框的使用场景易语言分组框的使用场景非常广泛,主要应用在以下几个方面:①将相关控件进行分组显示:在一个复杂的窗体中,易语言分组框可以将相关控件分组显示,使得用户对窗体中的不同区域进行理解和操作更加方便。

例如,在一个表单窗口中,将不同的输入框、单选框、复选框等进行分组显示,可以方便用户填写表单信息。

②对控件进行逻辑划分:在易语言中,分组框可以将相关的控件逻辑上进行划分,使得开发人员在程序设计时更加方便。

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

如何控制其他程序窗体上的窗口控件回调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows 操作系统,比如其他的程序等等之类的。

但是什么时候被调用却不知道了。

回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的形式传递参数。

所以很多人打比方,说回调函数还真有点像您随身带的BP 机:告诉别人号码,在它有事情时Call您!所以一个回调函数写出来之后,一定有个注册的动作,就是告诉调用者,你怎么样找到我写的函数。

某些Windows API 函数会要求以回调函数地址作为其参数之一,例如SetTimer 、LineDDA 、EnumObjects,以及我们下面要用到的EnumWindows。

在Delphi里声明一个回调函数的格式很简单,例如:function EnumWindowsProc(AhWnd:LongInt;lParam:LongInt):boolean;stdcall;首先是函数名称可以随便乱取,但函数参数的类型一般不得乱来,其顺序,数据类型等都有规定的,因为这些都是让其他程序调用的,他们已经规定好了的,但参数名称可以随便乱叫。

注意后面一定要带上“stdcall”,stdcall是标准调用,也就是说采用标准windows参数传递方式来调用函数。

编写函数体就很简单了,利用传递过来的参数就可以了,只要记住,这些参数是别人送给你的,你只要知道这些参数代表了什么意思。

再看个向调用者注册回调函数入口地址的函数。

function EnumWindows(lpEnumFunc: TFNWndEnumProc; lParam: LPARAM): BOOL; stdcall;TFNWndEnumProc其实就是指针类型。

其中的lpEnumFunc就是回调函数的入口地址了。

下面是调用EnumWindows的格式:EnumWindows(@EnumWindowsProc,0);通过向系统注册回调函数的入口地址,系统就能在需要的时候,调用回调函数,传递参数给它,也许这些参数就是我们想要的。

EnumWindows函数的功能是:枚举屏幕上所有程序中的顶层窗口,将窗口句柄以参数的形式传递给回调函数。

找到一个窗口,就调用一次回调函数。

枚举结束的条件是:要么枚举完所有的窗口,要么回调函数返回False。

lParam: LPARAM参数是程序定义的值,这个值被传递到回调函数。

回过头来再看一下EnumWindowsProc:function EnumWindowsProc(AhWnd:LongInt;lParam:LongInt):boolean;stdcall;当系统找到了一个窗口后,就开始调用这个回调函数,将窗口的句柄作为第一个参数传递过来,将在EnumWindows中lParam: LPARAM这个程序定义的值作为第二个参数传递过来。

所以我们可以在EnumWindowsProc函数中利用传递过来的两个参数来做某些处理了。

下面我们新建一个程序列举系统中所有程序的顶层窗口,我们要得到窗口的标题,要得到窗口类名称。

得到窗口标题用:function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer): Integer; stdcall;该函数功能是将窗口句柄为hWnd的窗口的标题拷入到一个缓冲区lpString。

nMaxCount是拷入缓冲区内的最大的字符数。

要得到窗口标题还可以发送消息:WM_GETTEXT,其实GetWindowText就是发送WM_GETTEXT消息的。

要得到窗口类名称用:function GetClassName(hWnd: HWND; lpClassName: PChar; nMaxCount: Integer): Integer; stdcall;其参数意义和上面的函数差不多。

不详细解释了。

我们先编写回调函数:EnumWindowsProc。

现在告诉自己,我们已经有了两个参数的值了。

这两个参数是系统给我们的.为了显示窗口标题和类名,我们用一个TMemo控件。

先在interface部分声明函数。

function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;stdcall;注意我将第二个参数改了,不要紧,到时候调用的时候注意看。

然后在implementation部分定义函数:function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;varlpszClassName,lpszWindowText:array[0..254] of char; //定义两个缓冲区。

beginGetWindowText(AhWnd,lpszWindowText,254); //得到窗口标题GetClassName(AhWnd,lpszClassName,254); //得到窗口类名。

Aform.memo1.lines.add(StrPas(lpszWindowText));Aform.memo1.lines.add(StrPas(lpszClassName));Aform.memo1.lines.add('--------------------');Result:=True;end;接着需要做的就是调用EnumWindows函数,注册回调函数入口地址,让系统调用回调函数,列举窗口了。

所以再添加一个TButton: btn_listwindowprocedure TForm1.btn_listwindowClick(Sender: TObject);beginEnumWindows(@EnumWindowsProc,LongInt(self));end;程序清单如下:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo;btn_listwindow: TButton;procedure btn_listwindowClick(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;stdcall;implementation{$R *.dfm}function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;varlpszClassName,lpszWindowText:array[0..254] of char;beginGetWindowText(AhWnd,lpszWindowText,254);GetClassName(AhWnd,lpszClassName,254);Aform.memo1.lines.add(StrPas(lpszWindowText));Aform.memo1.lines.add(StrPas(lpszClassName));Aform.memo1.lines.add('--------------------');Result:=True;end;procedure TForm1.btn_listwindowClick(Sender: TObject);beginEnumWindows(@EnumWindowsProc,LongInt(self));end;end.F9,运行,看看结果。

最好是F7单步跟踪调试一下,看看回调函数是怎么被调用的。

有了回调函数的概念及上面的例子,我们可以继续了。

其实想要找到一个标题已知的窗口句柄,用一个API函数就可以了:FindWindow.其函数原形是:function FindWindow(lpClassName, lpWindowName: PChar): HWND; stdcall;lpClassName:窗口类名.如果只知道标题,可以为空.窗口类名可以用很多工具获得.如winsignt32.lpWindowName:窗口标题.调用方式举例:var wndhwnd:HWND;wndhwnd:=FindWindow(nil,'某窗口标题');if wndhwnd<>0 then file://找到此窗口句柄.beginxxxxxendelse beginMessageBox(self.handle,'没找到该窗口句柄','提示',0);end;有了这个窗口句柄,就离我们的初始目的不远了:控制其他窗体上的窗口控件.同样,首先要得到其他窗体上窗口控件的句柄.我们用这个API函数:EnumChildWindows.其函数原形是:function EnumChildWindows(hWndParent: HWND; lpEnumFunc: TFNWndEnumProc;lParam: LPARAM): BOOL; stdcall;这个函数和EnumWindow函数很有些想象.其作用也很相似.它的功能就是列举窗口句柄为hWndParent的窗体上所有的窗口控件的句柄.同样也是以回调函数参数的形式给出的.我们再举一个实际的例子,来说明这个函数的用法.程序的功能是让用户输入一个窗口标题,然后调用FindWindow函数找到此窗口句柄.通过这个句柄,我们在一个Memo里显示该窗口上所有的窗口控件.同样先编写回调函数.function EnumChildWndProc(AhWnd:LongInt;AlParam:lParam):boolean;stdcall;varWndClassName: array[0..254] of Char;WndCaption: array[0..254] of Char;beginGetClassName(AhWnd,wndClassName,254);GetWindowText(aHwnd,WndCaption,254);with form1.memo1 dobeginlines.add( string(wndClassName));lines.add( string(wndCaption));lines.add('-------');end;result:=true;end;然后在一事件里调用EnumChildWindows函数.procedure TForm1.Button1Click(Sender: TObject);varhWnd:LongInt;beginmemo1.Lines.Clear;Memo1.Lines.Add(Edit1.Text+' 有如下控件类名称');hWnd:=FindWindow(nil,pchar(Edit1.Text));if hWnd<>0 thenbeginEnumChildWindows(hWnd,@EnumChildWndProc,0);endelse MessageBox(self.handle,'没找到该窗口句柄','提示',0);end;程序清单如下:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo; file://用来显示找到的控件Label1: TLabel;Edit1: TEdit;file://输入标题.Button1: TButton;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;function EnumChildWndProc(AhWnd:LongInt; AlParam:lParam):boolean;stdcall;implementation{$R *.dfm}function EnumChildWndProc(AhWnd:LongInt; AlParam:lParam):boolean;stdcall;varWndClassName: array[0..254] of Char; WndCaption: array[0..254] of Char;beginGetClassName(AhWnd,wndClassName,254); GetWindowText(aHwnd,WndCaption,254);with form1.memo1 dobeginlines.add( string(wndClassName));lines.add( string(wndCaption));lines.add('-------');end;result:=true;end;procedure TForm1.Button1Click(Sender: TObject); varhWnd:LongInt;beginmemo1.Lines.Clear;Memo1.Lines.Add(Edit1.Text+' 有如下控件类名称'); hWnd:=FindWindow(nil,pchar(Edit1.Text));if hWnd<>0 thenbeginEnumChildWindows(hWnd,@EnumChildWndProc,0);endelse MessageBox(self.handle,'没找到该窗口句柄','提示',0);end;end.有了控件句柄,我们当然就可以随心所欲了.比如:SendMessage(hWnd,WM_SETTEXT,0,LongInt(Pchar('sdafdsf')));就可以给控件发送文本.其他还可以发送不同的消息可以做很多事情.但是,有很大一个问题:假设一个窗体上有很多相同的控件,并且根本没办法区分他们,即使我们能找到所有的控件句柄,我们又不能区分到底哪个是我们想要的,同样是干着急.我想了很长时间,后来在大富翁里找到了答案,只要用到一个小技巧,就可以解决了.运行要控制的窗口程序。

相关文档
最新文档