Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Delphi ::: Win32 API (Windows API) ::: Formulários e Janelas

Listando todas as janelas (ou controles) filhas a partir do handle de uma janela pai

Quantidade de visualizações: 13166 vezes
Em algumas situações nós precisamos listar todas janelas filhas (ou controles) pertencentes a uma determinada janela pai, talvez com a intenção de obter ou enviar conteúdo a estas janelas ou controles. Isso pode ser feito com o auxílio da função EnumChildWindows() da API do Windows. Veja sua assinatura:

BOOL EnumChildWindows(          
  HWND hWndParent,
  WNDENUMPROC lpEnumFunc,


Veja que a função requer um handle para a janela pai e um ponteiro para uma função de Callback, que será chamada a cada vez que uma nova janela filha for encontrada. No argumento lParam nós podemos passar informações adicionais para a função. No exemplo abaixo eu passei um TMemo, para facilitar a exibição do ID, nome de classe e título (caption) da janela filha. Eis o código:

// Função de Callback usada para listar todas as janelas
// filhas a partir do handle de uma janela pai
function EnumChildProc(wnd: HWND; Memo: TMemo): BOOL; stdcall;
var
  buf, caption: array[0..255] of char;
  id_control: Integer;
begin
  // vamos obter o nome da classe da janela filha
  GetClassName(wnd, buf, SizeOf(buf) - 1);

  // vamos obter o título da janela filha
  SendMessage(wnd, WM_GETTEXT, 256, Integer(@Caption));

  // vamos obter o ID da janela (ou controle) filha
  id_control := GetDlgCtrlID(wnd);

  // vamos adicionar as informações ao TMemo
  Memo.Lines.Add('ID: ' + IntToStr(id_control) + ' - ' +
    ' Classe: ' + buf + ' - Caption: ' + caption);


Aqui eu rodei um código adicional para obter o handle da Calculadora do Windows e listei todos os seus controles. O resultado foi algo como:

ID: 403 - Classe: Edit - Caption: 0,
ID: 113 - Classe: Button - Caption: MC
ID: 114 - Classe: Button - Caption: MR
ID: 115 - Classe: Button - Caption: MS
ID: 116 - Classe: Button - Caption: M+
ID: 131 - Classe: Button - Caption: 7
ID: 128 - Classe: Button - Caption: 4
ID: 125 - Classe: Button - Caption: 1
ID: 124 - Classe: Button - Caption: 0
ID: 132 - Classe: Button - Caption: 8
ID: 129 - Classe: Button - Caption: 5
ID: 126 - Classe: Button - Caption: 2
ID: 80 - Classe: Button - Caption: +/-
ID: 133 - Classe: Button - Caption: 9
ID: 130 - Classe: Button - Caption: 6
ID: 127 - Classe: Button - Caption: 3
ID: 85 - Classe: Button - Caption: .
ID: 90 - Classe: Button - Caption: /
ID: 91 - Classe: Button - Caption: *
ID: 93 - Classe: Button - Caption: -
ID: 92 - Classe: Button - Caption: +
ID: 112 - Classe: Button - Caption: =
ID: 83 - Classe: Button - Caption: Backspace
ID: 82 - Classe: Button - Caption: CE
ID: 81 - Classe: Button - Caption: C
ID: 401 - Classe: Static - Caption:
ID: 107 - Classe: Button - Caption: 1/x
ID: 103 - Classe: Button - Caption: sqt
ID: 109 - Classe: Button - Caption: %
ID: 1000 - Classe: Static - Caption:

Você pode usar algumas das funções documentadas nesta seção para obter o handle da janela pai cujas janelas filhas você deseja listar.

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Delphi

Veja mais Dicas e truques de Delphi

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 35 usuários muito felizes estudando em nosso site.