Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#8

Re: kein OnMouseEnter/-Leave wärend VCL-Ereignisprozedur läu

  Alt 3. Apr 2007, 01:04
Das Suchen läuft ja in 'nem Thread ab ... in der Schleife wird ja "nur" auf das Ende des Suchthreads gewartet.


So, hab nun mal tief gesucht und so... *schweißabwisch*


CM_MOUSEENTER (CM_BASE + 19) und CM_MOUSELEAVE (CM_BASE + 20) wird in TApplication.DoMouseIdle ausgelöst, welches über TApplication.Idle aufgerufen wird.

TApplication.Idle wird aber leider nur in TApplication.HandleMessage aufgerufen, wenn sonst keine Messages vorhanden waren.

Da ich nur Application.ProcessMessages regelmäßig aufrufe und wärend die Buttonprozedur abgearbeitet wird von der VCL kein TApplication.HandleMessage ausgeführt wird, kann es leider nicht funktionieren.

Delphi-Quellcode:
procedure TApplication.ProcessMessages;
var
  Msg: TMsg;
begin
  while ProcessMessage(Msg) do {loop};
end;

procedure TApplication.HandleMessage;
var
  Msg: TMsg;
begin
  if not ProcessMessage(Msg) then Idle(Msg);
end;
TApplication.HandleMessage kann ich nicht selber aufrufen, da sonst der Hauptthread Aufgrund mangelnder Messages einfrieren kann.

Im Anhang mal eine Datei mit Application.ProcessMessages und Application.HandleMessage in der Schleife ... leider bleibt da Anzeige stehen, wenn keine Messages (z.B. durch das Bewegen der Maus über die Form) mehr empfangen werden.

> der Zähler unterm Stopp-Button steht, wenn z.B. keine Maus über der Form bewegt wird.


Da Idle den Haupthtread schlafen legt, ich DoMouseIdle nicht direkt aufrufen kann
und es unschön wäre, wenn ich z.B. vom Thread aus ständig den Hauptthread mit (Blind)Nachrichten bombadiere, nur damit der nicht einschlaft,
werd' ich wohl damit Leben müssen. (z.B. auf 'nen Timer umzustellen wollt' ich halt nich)
Angehängte Dateien
Dateityp: zip project1_874.zip (2,3 KB, 3x aufgerufen)
Dateityp: exe project1_685.exe (155,0 KB, 3x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat