文档章节

获取一个窗口的所有子窗口(包括嵌套) - 回复 "asian" 的问题

涂孟超
 涂孟超
发布于 2014/09/26 15:31
字数 364
阅读 4
收藏 0
问题来源: http://www.cnblogs.com/del/archive/2008/12/10/1345752.html#1397451

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{这应该使用递归函数}
procedure GetChildWindows(h: HWND);
var
  buf: array[0..255] of Char;  {这个缓冲区是获取类名用的, 如果不需要可以删除}
begin
  h := GetWindow(h, GW_CHILD); {第一个子窗口}
  while h <> 0 do
  begin
    {下面两行是要执行的操作, 并假定只处理 TEdit}
    GetClassName(h, buf, Length(buf));
    if buf = 'TEdit' then ShowMessageFmt('%s:%d', [buf, h]);

    h := GetWindow(h, GW_HWNDNEXT); {下一个子窗口}
    GetChildWindows(h);             {递归}
  end;
end;

{测试}
procedure TForm1.Button1Click(Sender: TObject);
begin
  GetChildWindows(Handle);
end;

end.

 
 
 
 
 

 

 

  

窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 206
  ClientWidth = 318
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Panel1: TPanel
    Left = 8
    Top = 8
    Width = 177
    Height = 190
    Caption = 'Panel1'
    TabOrder = 0
    object Panel2: TPanel
      Left = 8
      Top = 112
      Width = 161
      Height = 75
      Caption = 'Panel2'
      TabOrder = 0
      object Edit5: TEdit
        Left = 24
        Top = 8
        Width = 121
        Height = 21
        TabOrder = 0
        Text = 'Edit5'
      end
    end
    object Edit3: TEdit
      Left = 32
      Top = 16
      Width = 121
      Height = 21
      TabOrder = 1
      Text = 'Edit3'
    end
    object Edit4: TEdit
      Left = 32
      Top = 43
      Width = 121
      Height = 21
      TabOrder = 2
      Text = 'Edit4'
    end
  end
  object Edit1: TEdit
    Left = 191
    Top = 24
    Width = 121
    Height = 21
    TabOrder = 1
    Text = 'Edit1'
  end
  object Edit2: TEdit
    Left = 191
    Top = 51
    Width = 121
    Height = 21
    TabOrder = 2
    Text = 'Edit2'
  end
  object Button1: TButton
    Left = 216
    Top = 152
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 3
    OnClick = Button1Click
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/12/11/1352465.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
附实例!实现iframe父窗体与子窗体的通信

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由前端林子发表于云+社区专栏 本文主要会介绍如何基于MessengerJS,实现iframe父窗体与子窗体间的通信,传递数据信息。同时本...

腾讯云加社区
2018/11/16
9
0
Android SDK Document 框架导读的翻译和注解[2]

本文将介绍Activity. 一个Activity表示用户可实施一个具体操作的可视化UI, 比如,一个Activity可能表示一个菜单列表,用户可以从中选择,或者Activity展示一组有着标题的图片。 短消息应用程...

晨曦之光
2012/03/09
47
0
Android SDK Document 框架导读的翻译和注解[2]

本文将介绍Activity. 一个Activity表示用户可实施一个具体操作的可视化UI, 比如,一个Activity可能表示一个菜单列表,用户可以从中选择,或者Activity展示一组有着标题的图片。 短消息应用程...

晨曦之光
2012/03/07
206
0
[Unity2018.3新功能]Prefab嵌套和变体

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhenghongzhi6/article/details/84068691 本文节选自洪流学堂公众号专栏《郑洪智的Unity2018课》,未经允许不...

关尔Manic
2018/11/14
0
0
Windows窗体数据抓取详解

最近在客户项目上刚好遇到一个问题,项目需求是要获取某台机床的实时状态,问题点刚好就在于该机床不是传统意义上的数控机床,也不是PLC控制器,只有一个上传下载程序文件的应用程序,上面刚...

wangqiulin123456
2018/04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部