AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XE und Messages Phänomen

Ein Thema von haentschman · begonnen am 15. Jan 2011 · letzter Beitrag vom 15. Jan 2011
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#1

XE und Messages Phänomen

  Alt 15. Jan 2011, 07:48
Delphi-Version: XE
Moin alle...

letztens hat mich XE ein wenig überlistet... (oder ich mich ?)
Gegebenheiten, Unit im Mainthread:
Delphi-Quellcode:
.
.
private
  procedure BlaBla(var Msg: TMessage); Message WM_BLA;
.
.
procedure BlaBla(var Msg: TMessage);
begin
. // Aufgaben abarbeiten
.
end;
Message abschicken aus Thread, der im Mainthread erzeugt wird:
Delphi-Quellcode:
const
  WM_BLA = WM_USER + 1;
.
.
  PostMessage(HandleFenster, WM_BLA, wParam(Self), 0);
Phänomen:
- als erstes flogen mir Zugriffsverletzungen um die Ohren... hä, dachte ich
- dann kam ich drauf, daß die Procedure BlaBla bei jeder Message ausgeführt wird. (nicht nur WM_BLA)
- ich mußte in der Procedure die Message noch einmal unterscheiden..
  if Msg.Msg = WM_BLA then Könnte das bitte jemand erklären. Kann das jemand reproduzieren ?

Ein schönes Wochenende
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#2

AW: XE und Messages Phänomen

  Alt 15. Jan 2011, 09:35
Kann das jemand reproduzieren ?
Ich jedenfalls nicht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: XE und Messages Phänomen

  Alt 15. Jan 2011, 09:39
kann ich zum Glück überhaupt nicht reproduzieren....
entweder ist der Aufruf
 PostMessage(HandleFenster, WM_BLA, wParam(Self), 0); an einer ungünstigen Stelle verbaut (OnPaint,OnMouseMove etc.) oder eine Deiner Komponenten feuert in einem einem ähnlichen Ereignis.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#4

AW: XE und Messages Phänomen

  Alt 15. Jan 2011, 10:05
Danke für Eure Tipps:

kurze Rückmeldung:
- in einer Testanwendung bei der das Handle der Form benutzt wird funktioniert es.
- wenn ich aber ein Handle mit HandleFenster := AllocateHWnd(BlaBla); erzeuge ist das Verhalten zu reproduzieren. Ich weise ja die BlaBla Methode zu. Die Frage ist, warum dann die Message Direktive nicht greift und alle Messages in BlaBla ankommen.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#5

AW: XE und Messages Phänomen

  Alt 15. Jan 2011, 10:34
- wenn ich aber ein Handle mit HandleFenster := AllocateHWnd(BlaBla); erzeuge ist das Verhalten zu reproduzieren. Ich weise ja die BlaBla Methode zu. Die Frage ist, warum dann die Message Direktive nicht greift und alle Messages in BlaBla ankommen.
Weil du mit dem Zuweisen der Methode je gerade sagst: Das ist meine Message-Methode! Die soll alle Messages bekommen und kümmert sich dann um die Verteilung.

In diesem Fall setzt du den Message-Mechanismus von Delphi ausser Kraft, der sich übrigens in TObject.Dispatch befindet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#6

AW: XE und Messages Phänomen

  Alt 15. Jan 2011, 10:37
Danke für die Bestätigung...

so etwas habe ich mir auch grad gedacht. Also in so einem Falle ist die Message Unterscheidung nur innerhalb der Procedure möglich.

wieder was gelernt...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#7

AW: XE und Messages Phänomen

  Alt 15. Jan 2011, 10:45
Also in so einem Falle ist die Message Unterscheidung nur innerhalb der Procedure möglich.
Das ist nicht zwingend der Fall. TControl.WndProc macht es eigentlich vor. Ein gut platzierter Aufruf von Dispatch ermöglicht auch dabei die Verwendung der komfortablen Message-Methoden. Du musst dann nur eine entsprechende WndProc bereitstellen, die diesen Aufruf vornimmt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 23:36 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