Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi frage zu wm_user definition (https://www.delphipraxis.net/138515-frage-zu-wm_user-definition.html)

Marco Steinebach 11. Aug 2009 21:56


frage zu wm_user definition
 
Hallo,
ich hab zwar gesucht, aber nix rechts gefunden. ;-)
Ich möchte, innerhalb meiner Applikation, also alles selbstdefinierte Klassen, Botschaften austauschen. Also eigentlich
Delphi-Quellcode:
const
  wm_MeineBotschaft = WM_USER + 50;
Ich hab im MSDN gelesen, daß auch manche Buttons, Edits etc. solche Messages benutzen. Kann ich mir denn sicher sein, das mein WM_USER + 50 auch wirklich meines ist?
Gibt's da eine Methode um herauszufinden, daß meine Konstante noch frei ist?
Oder gleich Systemweit über RegisterWindowMessage?
Ich habe bei meinem Prog nämlcih das gefühl, meine Message kommt nicht immer beim Formular an, deshalb meine Frage.
Für Hilfe wäre ich sehr dankbar!
Viele Grüße
Marco

DeddyH 11. Aug 2009 22:05

Re: frage zu wm_user definition
 
Zitat:

Zitat von Marco Steinebach
Ich hab im MSDN gelesen, daß auch manche Buttons, Edits etc. solche Messages benutzen.

Hast Du da mal einen Link parat? AFAIK ist alles oberhalb von WM_USER zur freien Verfügung.

Marco Steinebach 11. Aug 2009 22:16

Re: frage zu wm_user definition
 
Zitat:

Zitat von DeddyH
Hast Du da mal einen Link parat? AFAIK ist alles oberhalb von WM_USER zur freien Verfügung.

;-) dachte ich auch, vielleicht spinn' ich ja ...
Bitteschön:
http://msdn.microsoft.com/en-us/library/ms644931.aspx

DeddyH 11. Aug 2009 22:22

Re: frage zu wm_user definition
 
Hatte ich das doch richtig in Erinnerung: WM_USER bis $7FFF kannst Du innerhalb Deiner Anwendung frei nutzen. Soll es aber anwendungsübergreifend sein, musst Du eine Konstante im Bereich von WM_APP bis $BFFF deklarieren.

himitsu 12. Aug 2009 05:57

Re: frage zu wm_user definition
 
Zitat:

Zitat von DeddyH
Hatte ich das doch richtig in Erinnerung: WM_USER bis $7FFF kannst Du innerhalb Deiner Anwendung frei nutzen. Soll es aber anwendungsübergreifend sein, musst Du eine Konstante im Bereich von WM_APP bis $BFFF deklarieren.

wobei man anwendungsübergreifend, eher über RegisterWindowMessage eine MessageID anfordern sollte.

Marco Steinebach 13. Aug 2009 12:50

Re: frage zu wm_user definition
 
Hallo,
Vielen herzlichen Dank für die Antworten. Dann bin ich beruhigt, nicht, daß ich hier wild Botschaften versende, die ich gar nicht versenden sollte. ;-)

Viele Grüße
Marco

stahli 1. Okt 2010 20:53

AW: frage zu wm_user definition
 
Hmm, nochmal eine grundsätzliche Frage:

Delphi-Quellcode:
WM_User + X
... Das kann doch niemals sicher funktionieren???

Angenommen ich benutze irgendwelche Komponenten, die bereits
Delphi-Quellcode:
WM_User + 100 .. 120
benutzen (ohne dass ich das weiss) und nun verwende ich auch nochmal diesen Bereich!?

Ist es nicht immer besser, über RegisterWindowMessage einen freien Wert anzufordern?

implementation 2. Okt 2010 09:04

AW: frage zu wm_user definition
 
Zitat:

Zitat von stahli (Beitrag 1053238)
Angenommen ich benutze irgendwelche Komponenten, die bereits
Delphi-Quellcode:
WM_User + 100 .. 120
benutzen (ohne dass ich das weiss) und nun verwende ich auch nochmal diesen Bereich!?

Ist es nicht immer besser, über RegisterWindowMessage einen freien Wert anzufordern?

Natürlich. Aber dann hast du keine feste Konstante.
Aber das Komponentenproblem kannst du auch umgehen, indem du WM_USER durch WM_APPLICATION ersetzt.

Satty67 2. Okt 2010 09:36

AW: frage zu wm_user definition
 
Verschiebt das nicht nur das Problem in einen anderen Wertebereich? Andere kommen ja auch auf die Idee, WM_USER und WM_APP sind ja nur Konstanten

Einzig WM_USER +0 bis WM_USER +1024 soll man nicht nehmen, weil ComControls und die VCL da teilweise bereits belegen. Beim Rest halt einfach hoffen, das die Botschaften "gezielt" genug versendet werden?

DeddyH 2. Okt 2010 10:11

AW: frage zu wm_user definition
 
Ist das aber wirklich ein Problem? Wenn ich innerhalb meiner Anwendung Messages verschicke, die auf diese Konstanten zurückgreifen, sind andere Anwendungen davon doch überhaupt nicht betroffen. Und anwendungsübergreifend werden ja im Normalfall auch klar definierte Konstanten verwendet. Das sollte also lediglich dann zum Problem werden, wenn man versehentlich den falschen Adressaten erwischt, der mit dieser Message dann auch noch etwas anzufangen weiß, weil er zufällig auch diese Message-Konstante irgendwo definiert hat. Das ist zwar nicht ganz auszuschließen, erscheint mir aber unwahrscheinlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 Uhr.
Seite 1 von 2  1 2      

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