Entwickler-Ecke

Windows API - Wie von Windows-Message-Code zu Message-Name?


Narses - Fr 11.05.07 11:37
Titel: Wie von Windows-Message-Code zu Message-Name?
Moin!

Gibt´s da eine Systemfunktion oder sowas, die mir aus dem Code einer Windows-Nachricht das Mnemonic macht? Z.B. ist WM_CLOSE = $10, wie komme ich quick von $10 auf den String 'WM_CLOSE' ohne die Unit Messages "umzubauen"? :?

Danke schonmal für sachdienliche Hinweise. ;)

cu
Narses


Dezipaitor - Fr 11.05.07 12:01

Soweit ich weiß garnicht.

Nicht der Namen ist die Nachricht, sondern der Wert. Der Name existiert nur, damit man als Programmierer nicht die ganzen Nummern und ihren Sinn sich merken muss.


Narses - Fr 11.05.07 12:45

Moin!

user profile iconDezipaitor hat folgendes geschrieben:
Nicht der Namen ist die Nachricht, sondern der Wert.

Danke für den sicher gut gemeinten Hinweis, aber das war mir bereits bekannt. ;)

Ich sag mal "Debugging" als Stichwort dazu. :P

//EDIT: ganz konkret interessiert mich die Nachricht $0118 :gruebel: kann im MSDN keinen Ansatz finden... :les:

cu
Narses


SAiBOT - Fr 18.05.07 15:46


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
case MSG of
  $0000: Result := 'WM_NULL';
  $0002: Result := 'WM_CREATE';
  $0003: Result := 'WM_DESTROY';
  $0004: Result := 'WM_MOVE ';
  $0005: Result := 'WM_SIZE';
  $0006: Result := 'WM_ACTIVATE';
  $0007: Result := 'WM_SETFOCUS';
  $0008: Result := 'WM_KILLFOCUS';
  //  etc etc....


anders gehts nicht.... für die ganzen Messages siehe mal in die "Messages.pas".


BenBE - Fr 18.05.07 16:06

Die ganzen Nachrichten sind in der WinUser.h definiert, die es im Microsoft Platform-SDK oder zu jedem guten C-Compiler hinterhergeschmissen gibt ^^

Dort einfach alle Zeilen filtern, die mit #define WM_ anfangen und mit einer vierstelligen Hex-Zahl enden.


Tino - Fr 18.05.07 16:16

user profile iconAssarbad hatte mal vor lange Zeit ein Programm dafür geschrieben:

http://assarbad.net/stuff/windowmessages.zip


Delete - Sa 19.05.07 00:58

Jupp, dank des enthaltenen Perlskripts, kann das auch jeder selber aktualisieren ;)

... was im Übrigen auch genutzt werden kann um das Perlskript Delphicode ausgeben zu lassen.


Narses - So 20.05.07 23:29

Moin!

Danke, das tut´s erstmal. ;)

Allerdings habe ich trotzdem leider noch keine Erläuterung für die Message $0118 gefunden... :les: :gruebel: :(

cu
Narses


Lannes - Mo 21.05.07 08:26

Hallo,

$0118 = WM_SYSTIMER, eine undokumentierte Message.

:arrow: Suche bei Google WM_SYSTIMER MICROSOFT
:arrow: http://entwickler-forum.de/archive/index.php/t-37116.html

Hab es gerade mal getestet, wird auch von WinSight erkannt wenn man eine Form mit einem Edit erstellt und diese mit ShowModal aufruft. Steuert wohl das Blinken des Cursors.


Narses - Mo 21.05.07 08:58

Moin!

Danke! ;) Super, user profile iconLannes! :zustimm:

Ich habe die Ergebnisse mal in diesem FAQ-Beitrag [http://www.delphi-library.de/topic_WindowsMessageCode+in+Text+umwandeln_73016.html] zusammengefasst.

cu
Narses