AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi EnumChildWindows gibt unterschiedliche Reihenfolge zurück
Thema durchsuchen
Ansicht
Themen-Optionen

EnumChildWindows gibt unterschiedliche Reihenfolge zurück

Ein Thema von hitzi · begonnen am 18. Okt 2006 · letzter Beitrag vom 18. Okt 2006
Antwort Antwort
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#1

EnumChildWindows gibt unterschiedliche Reihenfolge zurück

  Alt 18. Okt 2006, 08:22
Hallo,

ich hab ein kleines Programm geschrieben, was das Rendern mehrerer Tile mit Terragen vereinfacht. Es simuliert dabei einfach die Usereingaben. Das funktioniert auch einwandfrei, nur ein User hat damit Probleme. Bei ihm funktionieren zwei Renderdurchgänge, doch beim dritten werden plötzlich - ohne das Terragen geschlossen wurde - teilweise neue Handles für die Controls und noch schlimmer eine andere Reihenfolge der Controls von EnumChildWindows zurückgegeben.

Syntax: Handly; Classe; ControlID

Beispiele - siehe weiter unten in einem weiteren Beitrag von mir.

Das Windowhandle vom Hauptfenster ist in beiden Fällen gleich. Wieso wird eine andere Reihenfolge und neue Handles zurückgegeben, ohne dass das Programm geschlossen wurde? Bei anderen Usern und auch bei mir tritt dieser Effekt nicht auf und es werden bei jedem Durchlauf immer die gleichen Handles und die gleiche Reihenfolge zurückgegeben.

Hier noch die die EnumProc:
Delphi-Quellcode:
function EnumProc(wnd: HWND; Lines: TStrings): BOOL; stdcall;
var buf : array[0..255] of char;
begin
  Result := True;
  GetClassName(wnd, buf, SizeOf(buf) - 1);
  Lines.Add(Format('%d,%s,%d', [wnd, buf, GetDlgCtrlID(wnd)])); //Lines ist eine TStringlist
end;
Danke schonmal ...
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#2

Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc

  Alt 18. Okt 2006, 08:32
Als erstes würde ich mal die Versionen von Terragen und dem Betriebssystem miteinander vergleichen. Vielleicht hat der betroffene User ne andere terragenversion. Möglicherweise hat er auch ein Multiprozessorsystem (oder nen Core Duo Prozessor). Falls Terragen Multithreaded programmiert ist, instanziiert es vielleicht ein zweites Fenster.

MfG

Kolbaschedder
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#3

Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc

  Alt 18. Okt 2006, 08:36
Aber dann müßte es doch von Anfang an nicht funktionieren, aber zwei Renderdurchgänge laufen immer ohne Probleme. Die oben gezeigten Logs sind vom Problemrechner.
Kann ein anderes Programm(Virus/Rootkit) die Handles/Reihenfolge ändern?
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#4

Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc

  Alt 18. Okt 2006, 08:54
bei den ersten beiden Durchgängen hast du das hier :

131736; ToolbarWndClass; 0;
131724; ToolbarWindow32; 0;
131732; MDIClient; 3244;
66680; ThunderRT6FormDC; 32769;

beim dritten Durchgang kommt dann :

131736; ToolbarWndClass; 0;
131724; ToolbarWindow32; 0;
131732; MDIClient; 3244;
...
Hier einige Zeilen
...
66680; ThunderRT6FormDC; 32769;

bei der msdn findet sich folgendes :

Zitat:
Remarks

If a child window has created child windows of its own, EnumChildWindows enumerates those windows as well.

A child window that is moved or repositioned in the Z order during the enumeration process will be properly enumerated. The function does not enumerate a child window that is destroyed before being enumerated or that is created during the enumeration process.
sieht also so aus, als ob ein neues Childwindow erzeugt wird. das alte ist aber noch da, nur eben weiter hinten in deiner Liste
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#5

Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc

  Alt 18. Okt 2006, 09:13
Hey, du hast Recht. Wieso ist mir das nicht aufgefallen?
Also muss die Ursache noch etwas weiter vorn im Durchlauf liegen, wo evt. ein Fenster nicht richtig geschlossen wird.

Danke!
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#6

Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc

  Alt 18. Okt 2006, 09:16
Ja so geht's manchmal )
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc

  Alt 18. Okt 2006, 17:44
Moin Hitzi,

hänge Deine Logs bitte mal als Datei(en) an.
Danke.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#8

Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc

  Alt 18. Okt 2006, 18:04
Wieso?

Aber egal ... siehe Anhang
Angehängte Dateien
Dateityp: txt log_tile3_120.txt (11,2 KB, 7x aufgerufen)
Dateityp: txt log_tile1_183.txt (10,2 KB, 5x aufgerufen)
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc

  Alt 18. Okt 2006, 19:35
Moin Hitzi,

die waren als Ersatz für diese überlangen Beiträge gedacht..., was Du per editieren bewerkstelligen kannst
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#10

Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc

  Alt 18. Okt 2006, 20:49
Die Überlänge ist mir nicht aufgefallen, da bei mir die Codesegmente immer eingeklappt sind.
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz