![]() |
EnumChildWindows gibt unterschiedliche Reihenfolge zurück
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:
Danke schonmal ...
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; |
Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc
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 |
Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc
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? |
Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc
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:
|
Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc
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! :) |
Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc
Ja so geht's manchmal :-))
|
Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc
Moin Hitzi,
hänge Deine Logs bitte mal als Datei(en) an. Danke. |
Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc
Liste der Anhänge anzeigen (Anzahl: 2)
Wieso?
Aber egal ... siehe Anhang :) |
Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc
Moin Hitzi,
die waren als Ersatz für diese überlangen Beiträge gedacht..., was Du per editieren bewerkstelligen kannst ;-) |
Re: EnumChildWindows gibt unterschiedliche Reihenfolge zurüc
Die Überlänge ist mir nicht aufgefallen, da bei mir die Codesegmente immer eingeklappt sind.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz