Einzelnen Beitrag anzeigen

Nuclear-Ping
(Gast)

n/a Beiträge
 
#1

Windows Message WMChildActivate

  Alt 19. Okt 2004, 17:48
Ahoi USS DP!

Meine Anwendung ist ein MDI mit nur einer Child-Form, welche mehrfach instanziert werden kann.

Ich fange in dieser Child-Form die Message WM_CHILDACTIVATE ab, um in dieser verschiedene nötige Routinen durchführen zu lassen.

Soweit, sogut, solange es bei nur einer Instanz der Form bleibt.

Sobald aber eine weitere hinzukommt und angezeigt wird, bzw. ich zwischen den Childs wechsel, bombardiert Windows meine App mit WM_CHILDACTIVATE-Messages, was in diesem Fall dazu führt, dass sich das Wechseln zw. den Children unglaublich lange hinauszögert.

Code von der Message-Prozedur:
Delphi-Quellcode:
{ ************************************************************ }
procedure TPMainForm.WMChildActivate (var Msg: TWMChildActivate);
{ ************************************************************ }
var
  BT, ET: Cardinal;
begin
  inherited;

  AddToLog ('Message: #' + inttostr (Msg.Msg) + ' Result: ' + inttostr (Msg.Result));

  { ... }

  if Assigned (PQuickPlanetPhases) then
    begin
      BT := GetTickCount;
      PQuickPlanetPhases.UpdatePlanetPhases (NatalHoroscope,
                                             TransitHoroscope);
      ET := GetTickCount;
      AddToLog ('UpdatePlanetPhases: ' + inttostr (ET - BT) + ' Ticks');
    end;
end;
Log vom ersten Start des Programms bei einer Instanz:
Code:
Message: #34 Result: 0
UpdatePlanetPhases: 62 Ticks
Soweit ist alles im akzeptablen und grünen Bereich.

Wenn ich nun jedoch eine zweite Instanz erzeuge bzw. zwischen den Children hin- und her-schalte dauert der Vorgang auf meinem Rechner hier (AMD 2100+, 512MB, WinXP Prof) ca. 3sek, auf einem anderen Rechner (Notebook, eigentlich P4 (k.a. welcher Prozi), Win98, k.a. wieviel RAM) vlt. 1-2min (ich hab echt davor gesessen und gewartet)!

Der Log sieht bei mir dann wie folgt aus:
Code:
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
Message: #34 Result: 0
UpdatePlanetPhases: 47 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 47 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 47 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 47 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 47 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 32 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 47 Ticks
UpdatePlanetPhases: 63 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 47 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 63 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 62 Ticks
UpdatePlanetPhases: 32 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 32 Ticks
UpdatePlanetPhases: 47 Ticks
UpdatePlanetPhases: 46 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 47 Ticks
UpdatePlanetPhases: 31 Ticks
UpdatePlanetPhases: 63 Ticks
Message: #34 Result: 0
UpdatePlanetPhases: 47 Ticks
Also er kriegt zig mal die Message und arbeitet ebenfalls zig mal die Routinen dadrin ab, was entsprechend dauert ...

Hat jemand eine Idee, warum das so ist und wie man das lösen kann? Das sind einfach unakzeptable Werte und Ergebnisse und ich hab keine Ahnung, warum und woher die kommen ...

Bin für jegliche Tips und Hilfen wie immer sehr dankbar!

Grüße,
Mario
  Mit Zitat antworten Zitat