bin auf der Suche nach einer Liste aller
Windows Messages mit zugehöriger Id.
Habe zwar schon einige zusammen hätte aber
gerne Übersicht aller möglichen Messages. Gemäss
Doku sollen die ja alle windows.h definiert
sein, habe sie aber nicht gefunden, oder
ist es einfach schon zu spät ;)
Gruss
Lars Behrmann
_________________
Nothing is impossible. UML is the key for all your problems.
AODL - Make your .net apps OpenOffice ready
http://aodl.sourceforge.net/
> bin auf der Suche nach einer Liste aller Windows Messages mit zugehöriger Id.
> Habe zwar schon einige zusammen hätte aber gerne Übersicht aller möglichen Messages.
> Gemäss Doku sollen die ja alle windows.h definiert sein, habe sie aber nicht gefunden
ist 100% keine .NET Frage.
Windows Messages gibt es seit Jahrzehnten.
Es geht um Win32 und das 'Platform SDK' (kann man von MS separat downloaden)
dort primär in WinUser.h
Falls du VS2003 vollständig (inkl. C++ plus Platform SDK) installiert hast, dann:
..........\Vc7\PlatformSDK\Include
--
Thomas Scheidegger - MVP .NET - 'NETMaster'
http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/
> bin auf der Suche nach einer Liste aller
> Windows Messages mit zugehöriger Id.
> Habe zwar schon einige zusammen hätte aber
> gerne Übersicht aller möglichen Messages.
Das hängt vom OS ab!
Dann können sich Apps ja auch ihre eigenen Messages definieren.
Dann definiert sich Windows auch abhängige WM-Messages:
[CommDlg.h]
#define WM_PSD_GREEKTEXTRECT (WM_USER+4)
oder welche die nicht in WinUser.h stehen:
[RAS.h]
#define WM_RASDIALEVENT 0xCCCD
IMHO noch das sauberste, in
C:\Programme\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\*.h
nach
define WM_
zu durchsuchen.
> Gemäss Doku sollen die ja alle windows.h definiert
Naja, eigentlich eher "winuser.h", aber Windows.h
includiert ja <winuser.h> aber das ist noch in vielen anderen h-Dateien
versteckt.
http://www.woodmann.com/fravia/sources/WINUSER.H
Die daraus extrahierten Messages:
http://www.technology.niagarac.on.ca/courses/ctec1638/src/wm.h
Die ausführlichste WM-Liste im Netz, ist wohl
http://www.delphikingdom.com/asp/messages.asp?prefix=WM
Dann gibt es einige andere weniger vollständige:
http://www.autohotkey.com/docs/misc/SendMessageList.htm
ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
vielen Dank für die Antworten, die Linklisten
sind wirklich gut. Habe gestern wohl schon
zu lange geproggt ;) Das die Windows Messages
auch eigene sein können und schon seit Jahren
existieren ist mir schon klar. Ich finde aber
schon, dass das durchaus eine .net Frage ist.
Denn ich muss in meinem Projekt WndProc
überschreiben und ne ganze menge von "Standard
Messages" schlucken, hicks ;)
Gruss und noch mals Dane Ihr Beiden
Lars Behrmann
_________________
Nothing is impossible. UML is the key for all your problems.
AODL - Make your .net apps OpenOffice ready
http://aodl.sourceforge.net/
Frank Dzaebel schrieb:
> Ich finde aber schon, dass das durchaus eine .net Frage ist.
> Denn ich muss in meinem Projekt WndProc
> überschreiben und ne ganze menge von "Standard
> Messages" schlucken, hicks ;)
Da ist IMHO schon was wahres dran.
Zufällig habe ich ich noch eine Stelle im Netz gefunden ;-)
http://dzaebel.net/WM_Msg_NET.htm
IMHO nein, es ist definitiv eine Windows-OS/System - Grundlagen-Frage.
denke, ob das jetzt ein .net Thema ist
oder nicht, ist ja auch völlig egal.
Jedem seine Meinung, oder ;)
@Frank Vielen Dank, jetzt brauch ich mir
dat ganze nicht noch selber proggen, auch
mal wieder ganz nett ;)
Habe gerade noch eine wirklich knifflige (find ich ;))
Frage gepostet. Scheint aber noch nicht
verteilt worden zu sein. Ich habe ein
ActiveX control, welches auf der Windowsform
im Visual Studio Designer und in der kompilierten
App ein unterschiedliches Verhalten zeigt!?
Das Steuerelement kann Doukumente laden und
wieder schliessen. So weit ganz gut im Designer
funzt das auch, aber in der App wird aus Dokument
schliessen. Die Windows Message WM_KILLFOCUS
gefolgt von WM_DESTROY, was mir zwangsläufig mein
Steuerelement entfernt, häh. Bin etwas verwirrt,
wo ist der Unterschied zwischen DesignMode und
App?
Gruss
Lars Behrmann
_________________
Nothing is impossible. UML is the key for all your problems.
AODL - Make your .net apps OpenOffice ready
http://aodl.sourceforge.net/
Thomas Scheidegger [MVP] schrieb:
eine Meinung haben darf man schon...
Aber:
WM_xxx sind nun mal Windows/Win32-Grundlagen,
da gibt es IMHO keinen Interpretations-Spielraum.
In der .NET MSDN-Doku werden die WM_ ja auch nirgends erklärt,
sondern immer klar auf das SDK verwiesen wie ja da offensichtlich naheliegend:
Control.WndProc
http://msdn.microsoft.com/library/deu/cpref/html/frlrfSystemWindowsFormsControlClassWndProcTopic.asp
dort:
"Weitere Informationen über die Verarbeitung von Windows-Meldungen finden Sie
in der Dokumentation zur WindowProc-Funktion in der
Windows Platform SDK-Referenz der MSDN Library.
....
In der Platform SDK-Dokumentation der MSDN Library finden Sie Informationen
über die verfügbaren Werte für Message.Msg, Message.LParam und Message.WParam.
Die tatsächlichen konstanten Werte finden Sie in der Headerdatei windows.h,
die Sie im Download des Platform SDK (Abschnitt Core SDK) und im MSDN finden."
> WM_xxx sind nun mal Windows/Win32-Grundlagen,
> da gibt es IMHO keinen Interpretations-Spielraum.
sehe ich auch so.
> Die tatsächlichen konstanten Werte finden Sie in der Headerdatei
> windows.h,
> die Sie im Download des Platform SDK (Abschnitt Core SDK) und im MSDN
> finden."
Das ist allerdings schon seit langem ein Doku-Problem. Nicht-C-Programmierer
haben hier doppelten Aufwand. In der MSDN die Beschreibung zu einer Message
zu finden, ist die eine Sache. Dann sollten aber dort auch neben den
Literalen die Zahlenwerte genannt werden. Dass man dafür die Header-Dateien
durchwühlen muss, fand ich schon zu VB-Classic-Zeiten ziemlich nervig. Zumal
die oft geschachtelt sind:
#define bums 123
...
#define dings bums
...
#define DasGesuchte dings
Der Suchaufwand könnte durch die vollständige Dokumentation erspart bleiben.
Gruß
Joachim
--
Dr. Joachim Fuchs - Autor - Dozent - Softwarearchitekt
MCT - MCAD
http://www.fuechse-online.de/beruflich/index.html -
http://vbnet.codebooks.de
> eine Meinung haben darf man schon...
> Aber: WM_xxx sind nun mal Windows/Win32-Grundlagen,
> da gibt es IMHO keinen Interpretations-Spielraum.
Da aber jeder .NET Programmierer nun mal früher oder
später auf dieses Problem trifft, wäre es trotzdem gut,
ähnlich wie etwa http://www.pinvoke.NET, so eine Liste
zu haben (IMHO).
Ich habe übrigens meinen Artikel noch einmal geupdatet.
http://dzaebel.net/WM_Msg_NET.htm
> Da aber jeder .NET Programmierer nun mal früher oder
> später auf dieses Problem trifft, wäre es trotzdem gut,
> ähnlich wie etwa http://www.pinvoke.NET, so eine Liste
> zu haben (IMHO).
> Ich habe übrigens meinen Artikel noch einmal geupdatet.
> http://dzaebel.net/WM_Msg_NET.htm
Hier ist meine Liste. Ich hatte sie mal mittels Skript
aus den Windows-Headern erstellt.
ciao
Robert
/// <summary>
/// Windows Messages
/// </summary>
public enum Win32Messages : uint
{
WM_NULL = 0,
WM_CREATE = 1,
WM_DESTROY = 2,
WM_MOVE = 3,
WM_SIZE = 5,
WM_ACTIVATE = 6,
WM_SETFOCUS = 7,
WM_KILLFOCUS = 8,
WM_ENABLE = 10,
WM_SETREDRAW = 11,
WM_SETTEXT = 12,
WM_GETTEXT = 13,
WM_GETTEXTLENGTH = 14,
WM_PAINT = 15,
WM_CLOSE = 16,
WM_QUERYENDSESSION = 17,
WM_QUERYOPEN = 19,
WM_ENDSESSION = 22,
WM_QUIT = 18,
WM_ERASEBKGND = 20,
WM_SYSCOLORCHANGE = 21,
WM_SHOWWINDOW = 24,
WM_WININICHANGE = 26,
WM_SETTINGCHANGE = 26,
WM_DEVMODECHANGE = 27,
WM_ACTIVATEAPP = 28,
WM_FONTCHANGE = 29,
WM_TIMECHANGE = 30,
WM_CANCELMODE = 31,
WM_SETCURSOR = 32,
WM_MOUSEACTIVATE = 33,
WM_CHILDACTIVATE = 34,
WM_QUEUESYNC = 35,
WM_GETMINMAXINFO = 36,
WM_PAINTICON = 38,
WM_ICONERASEBKGND = 39,
WM_NEXTDLGCTL = 40,
WM_SPOOLERSTATUS = 42,
WM_DRAWITEM = 43,
WM_MEASUREITEM = 44,
WM_DELETEITEM = 45,
WM_VKEYTOITEM = 46,
WM_CHARTOITEM = 47,
WM_SETFONT = 48,
WM_GETFONT = 49,
WM_SETHOTKEY = 50,
WM_GETHOTKEY = 51,
WM_QUERYDRAGICON = 55,
WM_COMPAREITEM = 57,
WM_GETOBJECT = 61,
WM_COMPACTING = 65,
WM_COMMNOTIFY = 68,
WM_WINDOWPOSCHANGING = 70,
WM_WINDOWPOSCHANGED = 71,
WM_POWER = 72,
WM_COPYDATA = 74,
WM_CANCELJOURNAL = 75,
WM_NOTIFY = 78,
WM_INPUTLANGCHANGEREQUEST = 80,
WM_INPUTLANGCHANGE = 81,
WM_TCARD = 82,
WM_HELP = 83,
WM_USERCHANGED = 84,
WM_NOTIFYFORMAT = 85,
WM_CONTEXTMENU = 123,
WM_STYLECHANGING = 124,
WM_STYLECHANGED = 125,
WM_DISPLAYCHANGE = 126,
WM_GETICON = 127,
WM_SETICON = 128,
WM_NCCREATE = 129,
WM_NCDESTROY = 130,
WM_NCCALCSIZE = 131,
WM_NCHITTEST = 132,
WM_NCPAINT = 133,
WM_NCACTIVATE = 134,
WM_GETDLGCODE = 135,
WM_SYNCPAINT = 136,
WM_NCMOUSEMOVE = 160,
WM_NCLBUTTONDOWN = 161,
WM_NCLBUTTONUP = 162,
WM_NCLBUTTONDBLCLK = 163,
WM_NCRBUTTONDOWN = 164,
WM_NCRBUTTONUP = 165,
WM_NCRBUTTONDBLCLK = 166,
WM_NCMBUTTONDOWN = 167,
WM_NCMBUTTONUP = 168,
WM_NCMBUTTONDBLCLK = 169,
WM_NCXBUTTONDOWN = 171,
WM_NCXBUTTONUP = 172,
WM_NCXBUTTONDBLCLK = 173,
WM_KEYFIRST = 256,
WM_KEYDOWN = 256,
WM_KEYUP = 257,
WM_CHAR = 258,
WM_DEADCHAR = 259,
WM_SYSKEYDOWN = 260,
WM_SYSKEYUP = 261,
WM_SYSCHAR = 262,
WM_SYSDEADCHAR = 263,
WM_KEYLAST = 264,
WM_IME_STARTCOMPOSITION = 269,
WM_IME_ENDCOMPOSITION = 270,
WM_IME_COMPOSITION = 271,
WM_IME_KEYLAST = 271,
WM_INITDIALOG = 272,
WM_COMMAND = 273,
WM_SYSCOMMAND = 274,
WM_TIMER = 275,
WM_HSCROLL = 276,
WM_VSCROLL = 277,
WM_INITMENU = 278,
WM_INITMENUPOPUP = 279,
WM_MENUSELECT = 287,
WM_MENUCHAR = 288,
WM_ENTERIDLE = 289,
WM_MENURBUTTONUP = 290,
WM_MENUDRAG = 291,
WM_MENUGETOBJECT = 292,
WM_UNINITMENUPOPUP = 293,
WM_MENUCOMMAND = 294,
WM_CHANGEUISTATE = 295,
WM_UPDATEUISTATE = 296,
WM_QUERYUISTATE = 297,
WM_CTLCOLORMSGBOX = 306,
WM_CTLCOLOREDIT = 307,
WM_CTLCOLORLISTBOX = 308,
WM_CTLCOLORBTN = 309,
WM_CTLCOLORDLG = 310,
WM_CTLCOLORSCROLLBAR = 311,
WM_CTLCOLORSTATIC = 312,
WM_MOUSEFIRST = 512,
WM_MOUSEMOVE = 512,
WM_LBUTTONDOWN = 513,
WM_LBUTTONUP = 514,
WM_LBUTTONDBLCLK = 515,
WM_RBUTTONDOWN = 516,
WM_RBUTTONUP = 517,
WM_RBUTTONDBLCLK = 518,
WM_MBUTTONDOWN = 519,
WM_MBUTTONUP = 520,
WM_MBUTTONDBLCLK = 521,
WM_MOUSEWHEEL = 522,
WM_XBUTTONDOWN = 523,
WM_XBUTTONUP = 524,
WM_XBUTTONDBLCLK = 525,
WM_MOUSELAST = 525,
WM_PARENTNOTIFY = 528,
WM_ENTERMENULOOP = 529,
WM_EXITMENULOOP = 530,
WM_NEXTMENU = 531,
WM_SIZING = 532,
WM_CAPTURECHANGED = 533,
WM_MOVING = 534,
WM_POWERBROADCAST = 536,
WM_DEVICECHANGE = 537,
WM_MDICREATE = 544,
WM_MDIDESTROY = 545,
WM_MDIACTIVATE = 546,
WM_MDIRESTORE = 547,
WM_MDINEXT = 548,
WM_MDIMAXIMIZE = 549,
WM_MDITILE = 550,
WM_MDICASCADE = 551,
WM_MDIICONARRANGE = 552,
WM_MDIGETACTIVE = 553,
WM_MDISETMENU = 560,
WM_ENTERSIZEMOVE = 561,
WM_EXITSIZEMOVE = 562,
WM_DROPFILES = 563,
WM_MDIREFRESHMENU = 564,
WM_IME_SETCONTEXT = 641,
WM_IME_NOTIFY = 642,
WM_IME_CONTROL = 643,
WM_IME_COMPOSITIONFULL = 644,
WM_IME_SELECT = 645,
WM_IME_CHAR = 646,
WM_IME_REQUEST = 648,
WM_IME_KEYDOWN = 656,
WM_IME_KEYUP = 657,
WM_MOUSEHOVER = 673,
WM_MOUSELEAVE = 675,
WM_NCMOUSEHOVER = 672,
WM_NCMOUSELEAVE = 674,
WM_CUT = 768,
WM_COPY = 769,
WM_PASTE = 770,
WM_CLEAR = 771,
WM_UNDO = 772,
WM_RENDERFORMAT = 773,
WM_RENDERALLFORMATS = 774,
WM_DESTROYCLIPBOARD = 775,
WM_DRAWCLIPBOARD = 776,
WM_PAINTCLIPBOARD = 777,
WM_VSCROLLCLIPBOARD = 778,
WM_SIZECLIPBOARD = 779,
WM_ASKCBFORMATNAME = 780,
WM_CHANGECBCHAIN = 781,
WM_HSCROLLCLIPBOARD = 782,
WM_QUERYNEWPALETTE = 783,
WM_PALETTEISCHANGING = 784,
WM_PALETTECHANGED = 785,
WM_HOTKEY = 786,
WM_PRINT = 791,
WM_PRINTCLIENT = 792,
WM_APPCOMMAND = 793,
WM_HANDHELDFIRST = 856,
WM_HANDHELDLAST = 863,
WM_AFXFIRST = 864,
WM_AFXLAST = 895,
WM_PENWINFIRST = 896,
WM_PENWINLAST = 911,
WM_APP = 32768,
WM_USER = 1024,
}
IMHO
sehe ich (und subjektiv vermute ich MS teils auch)
all dies genau im Gegenteil:
Dies soll fast eine Art 'Hemmschwelle' für Einsteiger (C++/SDK-Unkundige) sein,
denn um die zahlreichen Windows-Messages und deren (teils komplexe) Parametern
sowie Randbedingungen/Nebeneffekte zu verstehen/beherrschen ist schon mehr nötig
als nur eine simple WM_xxx - Tabelle.
Und die SDK (C++) -Doku muss man da meist eh auch mit konsultieren,
eine Doku-Duplizierung spezifischer für .NET wäre sinnfrei.
Weiter soll andererseits auch keine neue Attraktivität mehr geschaffen werden,
das reine .NET - Umfeld zu verlassen und unbedacht wegen jedem SchnickSchnak
wiederum alte APIs/WM_xxx einzubinden.
(aber: genau das Gegenteil wird dann für Avalon/WPF gelten, dies ist primär für .NET gemacht)
na da habe ich ja was losgetreten ;) Aber egal,
ich kann Frank nur zustimmen. Es wäre schön, egal
zu welchem Bereich es gehört, ob nun Win32 oder..,
dass wenn man als .net Entwickler, von wo aus ich
diese Dinge ganz offensichtlich nutzen kann, auch
n .net Doku Anteil vorfinde. Aber wieder egal, ich
aktzeptiere natürlich jede Eurer Ansichten. Und
zum Schluss noch vielen Dank für Eure Code Postings,
denke das wird in Zukunft auch vielen anderen
Entwicklern beim Programmieren weiterhelfen und
das wollen wir doch alle.
PS: Habe mein ActiveX Problem gelöst ;) Gibt kein
unterschiedliches Verhalten, nur schlecht programmierte
ActiveX Controls ;)
Gruss
Lars Behrmann
Frank Dzaebel schrieb:
> Hier ist meine Liste. Ich hatte sie mal mittels Skript
> aus den Windows-Headern erstellt.
Das finde ich auch eine gute Methode.
Da bist Du dann wohl nur bestimmte Header durchgegangen.
[RAS.h] #define WM_RASDIALEVENT 0xCCCD
fehlt ja z.B. Hast Du das Script noch ?
> Dies soll fast eine Art 'Hemmschwelle' für Einsteiger (C++/SDK-Unkundige)
> sein,
> denn um die zahlreichen Windows-Messages und deren (teils komplexe) Parametern
> sowie Randbedingungen/Nebeneffekte zu verstehen/beherrschen ist schon mehr
> nötig
> als nur eine simple WM_xxx - Tabelle.
Kann ich gut nachvollziehen und ist auch eigentlich eine gute Richtlinie.
Das Dilemma ist nur, dass .NET (noch) nicht (ganz) ohne auskkommt, will
man spezielle Verhaltensweisen erreichen.
mit technischen Grundregeln entsprechend wie:
"willst du ein Auto selber tunen/reparieren, musst du halt was von Motoren usw verstehen"
scheinen heute viele 'Programmierer' IMHO irgendwie Mühe zu haben...
>> Hier ist meine Liste. Ich hatte sie mal mittels Skript
>> aus den Windows-Headern erstellt.
>
>
> Das finde ich auch eine gute Methode.
> Da bist Du dann wohl nur bestimmte Header durchgegangen.
> [RAS.h] #define WM_RASDIALEVENT 0xCCCD
> fehlt ja z.B. Hast Du das Script noch ?
Ja, habe ich noch. Es ist aber Perl und generiert ein C-File,
das anschliessend übersetzt und ausgeführt werden muss.
Durch dieses Verfahren werden etwaige Ausdrücke aus den
C-#defines ausgewertet, so dass ein zusätzliches Parsing von
Ausdrücken und #if (WINVER >= 0x0400) entfällt. Dafür ist ja
der C-Präprozessor da.
Ich lass mal das Skript über das ganze Include von VS.NET 05
laufen. Mal sehen was das gibt.
ciao
Robert
Hier sind alle Messages aus PlatformSDK/Include/ von VS.NET 2005.
Diesmal sortiert.
ciao
Robert
public enum Win32Messages : uint
{
WM_ACTIVATE = 6,
WM_ACTIVATEAPP = 28,
WM_AFXFIRST = 864,
WM_AFXLAST = 895,
WM_APP = 32768,
WM_ASKCBFORMATNAME = 780,
WM_CANCELJOURNAL = 75,
WM_CANCELMODE = 31,
WM_CAPTURECHANGED = 533,
WM_CAP_ABORT = 1093,
WM_CAP_DLG_VIDEOCOMPRESSION = 1070,
WM_CAP_DLG_VIDEODISPLAY = 1067,
WM_CAP_DLG_VIDEOFORMAT = 1065,
WM_CAP_DLG_VIDEOSOURCE = 1066,
WM_CAP_DRIVER_CONNECT = 1034,
WM_CAP_DRIVER_DISCONNECT = 1035,
WM_CAP_DRIVER_GET_CAPS = 1038,
WM_CAP_DRIVER_GET_NAME = 1036,
WM_CAP_DRIVER_GET_NAMEA = 1036,
WM_CAP_DRIVER_GET_NAMEW = 1136,
WM_CAP_DRIVER_GET_VERSION = 1037,
WM_CAP_DRIVER_GET_VERSIONA = 1037,
WM_CAP_DRIVER_GET_VERSIONW = 1137,
WM_CAP_EDIT_COPY = 1054,
WM_CAP_END = 1205,
WM_CAP_FILE_ALLOCATE = 1046,
WM_CAP_FILE_GET_CAPTURE_FILE = 1045,
WM_CAP_FILE_GET_CAPTURE_FILEA = 1045,
WM_CAP_FILE_GET_CAPTURE_FILEW = 1145,
WM_CAP_FILE_SAVEAS = 1047,
WM_CAP_FILE_SAVEASA = 1047,
WM_CAP_FILE_SAVEASW = 1147,
WM_CAP_FILE_SAVEDIB = 1049,
WM_CAP_FILE_SAVEDIBA = 1049,
WM_CAP_FILE_SAVEDIBW = 1149,
WM_CAP_FILE_SET_CAPTURE_FILE = 1044,
WM_CAP_FILE_SET_CAPTURE_FILEA = 1044,
WM_CAP_FILE_SET_CAPTURE_FILEW = 1144,
WM_CAP_FILE_SET_INFOCHUNK = 1048,
WM_CAP_GET_AUDIOFORMAT = 1060,
WM_CAP_GET_CAPSTREAMPTR = 1025,
WM_CAP_GET_MCI_DEVICE = 1091,
WM_CAP_GET_MCI_DEVICEA = 1091,
WM_CAP_GET_MCI_DEVICEW = 1191,
WM_CAP_GET_SEQUENCE_SETUP = 1089,
WM_CAP_GET_STATUS = 1078,
WM_CAP_GET_USER_DATA = 1032,
WM_CAP_GET_VIDEOFORMAT = 1068,
WM_CAP_GRAB_FRAME = 1084,
WM_CAP_GRAB_FRAME_NOSTOP = 1085,
WM_CAP_PAL_AUTOCREATE = 1107,
WM_CAP_PAL_MANUALCREATE = 1108,
WM_CAP_PAL_OPEN = 1104,
WM_CAP_PAL_OPENA = 1104,
WM_CAP_PAL_OPENW = 1204,
WM_CAP_PAL_PASTE = 1106,
WM_CAP_PAL_SAVE = 1105,
WM_CAP_PAL_SAVEA = 1105,
WM_CAP_PAL_SAVEW = 1205,
WM_CAP_SEQUENCE = 1086,
WM_CAP_SEQUENCE_NOFILE = 1087,
WM_CAP_SET_AUDIOFORMAT = 1059,
WM_CAP_SET_CALLBACK_CAPCONTROL = 1109,
WM_CAP_SET_CALLBACK_ERROR = 1026,
WM_CAP_SET_CALLBACK_ERRORA = 1026,
WM_CAP_SET_CALLBACK_ERRORW = 1126,
WM_CAP_SET_CALLBACK_FRAME = 1029,
WM_CAP_SET_CALLBACK_STATUS = 1027,
WM_CAP_SET_CALLBACK_STATUSA = 1027,
WM_CAP_SET_CALLBACK_STATUSW = 1127,
WM_CAP_SET_CALLBACK_VIDEOSTREAM = 1030,
WM_CAP_SET_CALLBACK_WAVESTREAM = 1031,
WM_CAP_SET_CALLBACK_YIELD = 1028,
WM_CAP_SET_MCI_DEVICE = 1090,
WM_CAP_SET_MCI_DEVICEA = 1090,
WM_CAP_SET_MCI_DEVICEW = 1190,
WM_CAP_SET_OVERLAY = 1075,
WM_CAP_SET_PREVIEW = 1074,
WM_CAP_SET_PREVIEWRATE = 1076,
WM_CAP_SET_SCALE = 1077,
WM_CAP_SET_SCROLL = 1079,
WM_CAP_SET_SEQUENCE_SETUP = 1088,
WM_CAP_SET_USER_DATA = 1033,
WM_CAP_SET_VIDEOFORMAT = 1069,
WM_CAP_SINGLE_FRAME = 1096,
WM_CAP_SINGLE_FRAME_CLOSE = 1095,
WM_CAP_SINGLE_FRAME_OPEN = 1094,
WM_CAP_START = 1024,
WM_CAP_STOP = 1092,
WM_CAP_UNICODE_END = 1205,
WM_CAP_UNICODE_START = 1124,
WM_CHANGECBCHAIN = 781,
WM_CHAR = 258,
WM_CHARTOITEM = 47,
WM_CHILDACTIVATE = 34,
WM_CHOOSEFONT_GETLOGFONT = 1025,
WM_CHOOSEFONT_SETFLAGS = 1126,
WM_CHOOSEFONT_SETLOGFONT = 1125,
WM_CLEAR = 771,
WM_CLOSE = 16,
WM_COMMAND = 273,
WM_COMMNOTIFY = 68,
WM_COMPACTING = 65,
WM_COMPAREITEM = 57,
WM_CONTEXTMENU = 123,
WM_CONVERTREQUEST = 266,
WM_CONVERTRESULT = 267,
WM_COPY = 769,
WM_COPYDATA = 74,
WM_CPL_LAUNCH = 2024,
WM_CPL_LAUNCHED = 2025,
WM_CREATE = 1,
WM_CTLCOLOR = 25,
WM_CTLCOLORBTN = 309,
WM_CTLCOLORDLG = 310,
WM_CTLCOLOREDIT = 307,
WM_CTLCOLORLISTBOX = 308,
WM_CTLCOLORMSGBOX = 306,
WM_CTLCOLORSCROLLBAR = 311,
WM_CTLCOLORSTATIC = 312,
WM_CUT = 768,
WM_DDE_ACK = 996,
WM_DDE_ADVISE = 994,
WM_DDE_DATA = 997,
WM_DDE_EXECUTE = 1000,
WM_DDE_FIRST = 992,
WM_DDE_INITIATE = 992,
WM_DDE_LAST = 1000,
WM_DDE_POKE = 999,
WM_DDE_REQUEST = 998,
WM_DDE_TERMINATE = 993,
WM_DDE_UNADVISE = 995,
WM_DEADCHAR = 259,
WM_DELETEITEM = 45,
WM_DESTROY = 2,
WM_DESTROYCLIPBOARD = 775,
WM_DEVICECHANGE = 537,
WM_DEVMODECHANGE = 27,
WM_DISPLAYCHANGE = 126,
WM_DRAWCLIPBOARD = 776,
WM_DRAWITEM = 43,
WM_DROPFILES = 563,
WM_ENABLE = 10,
WM_ENDSESSION = 22,
WM_ENTERIDLE = 289,
WM_ENTERMENULOOP = 529,
WM_ENTERSIZEMOVE = 561,
WM_ERASEBKGND = 20,
WM_EXITMENULOOP = 530,
WM_EXITSIZEMOVE = 562,
WM_FONTCHANGE = 29,
WM_GETDLGCODE = 135,
WM_GETFONT = 49,
WM_GETHOTKEY = 51,
WM_GETICON = 127,
WM_GETMINMAXINFO = 36,
WM_GETOBJECT = 61,
WM_GETTEXT = 13,
WM_GETTEXTLENGTH = 14,
WM_HANDHELDFIRST = 856,
WM_HANDHELDLAST = 863,
WM_HELP = 83,
WM_HOTKEY = 786,
WM_HSCROLL = 276,
WM_HSCROLLCLIPBOARD = 782,
WM_ICONERASEBKGND = 39,
WM_IMEKEYDOWN = 656,
WM_IMEKEYUP = 657,
WM_IME_CHAR = 646,
WM_IME_COMPOSITION = 271,
WM_IME_COMPOSITIONFULL = 644,
WM_IME_CONTROL = 643,
WM_IME_ENDCOMPOSITION = 270,
WM_IME_KEYDOWN = 656,
WM_IME_KEYLAST = 271,
WM_IME_KEYUP = 657,
WM_IME_NOTIFY = 642,
WM_IME_REPORT = 640,
WM_IME_REQUEST = 648,
WM_IME_SELECT = 645,
WM_IME_SETCONTEXT = 641,
WM_IME_STARTCOMPOSITION = 269,
WM_INITDIALOG = 272,
WM_INITMENU = 278,
WM_INITMENUPOPUP = 279,
WM_INPUTLANGCHANGE = 81,
WM_INPUTLANGCHANGEREQUEST = 80,
WM_INTERIM = 268,
WM_KEYDOWN = 256,
WM_KEYFIRST = 256,
WM_KEYLAST = 264,
WM_KEYUP = 257,
WM_KILLFOCUS = 8,
WM_LBUTTONDBLCLK = 515,
WM_LBUTTONDOWN = 513,
WM_LBUTTONUP = 514,
WM_MBUTTONDBLCLK = 521,
WM_MBUTTONDOWN = 519,
WM_MBUTTONUP = 520,
WM_MDIACTIVATE = 546,
WM_MDICASCADE = 551,
WM_MDICREATE = 544,
WM_MDIDESTROY = 545,
WM_MDIGETACTIVE = 553,
WM_MDIICONARRANGE = 552,
WM_MDIMAXIMIZE = 549,
WM_MDINEXT = 548,
WM_MDIREFRESHMENU = 564,
WM_MDIRESTORE = 547,
WM_MDISETMENU = 560,
WM_MDITILE = 550,
WM_MEASUREITEM = 44,
WM_MENUCHAR = 288,
WM_MENUCOMMAND = 294,
WM_MENUDRAG = 291,
WM_MENUGETOBJECT = 292,
WM_MENURBUTTONUP = 290,
WM_MENUSELECT = 287,
WM_MOUSEACTIVATE = 33,
WM_MOUSEFIRST = 512,
WM_MOUSEHOVER = 673,
WM_MOUSELAST = 521,
WM_MOUSELEAVE = 675,
WM_MOUSEMOVE = 512,
WM_MOUSEWHEEL = 522,
WM_MOVE = 3,
WM_MOVING = 534,
WM_NCACTIVATE = 134,
WM_NCCALCSIZE = 131,
WM_NCCREATE = 129,
WM_NCDESTROY = 130,
WM_NCHITTEST = 132,
WM_NCLBUTTONDBLCLK = 163,
WM_NCLBUTTONDOWN = 161,
WM_NCLBUTTONUP = 162,
WM_NCMBUTTONDBLCLK = 169,
WM_NCMBUTTONDOWN = 167,
WM_NCMBUTTONUP = 168,
WM_NCMOUSEHOVER = 672,
WM_NCMOUSELEAVE = 674,
WM_NCMOUSEMOVE = 160,
WM_NCPAINT = 133,
WM_NCRBUTTONDBLCLK = 166,
WM_NCRBUTTONDOWN = 164,
WM_NCRBUTTONUP = 165,
WM_NEXTDLGCTL = 40,
WM_NEXTMENU = 531,
WM_NOTIFY = 78,
WM_NOTIFYFORMAT = 85,
WM_NULL = 0,
WM_PAINT = 15,
WM_PAINTCLIPBOARD = 777,
WM_PAINTICON = 38,
WM_PALETTECHANGED = 785,
WM_PALETTEISCHANGING = 784,
WM_PARENTNOTIFY = 528,
WM_PASTE = 770,
WM_PENWINFIRST = 896,
WM_PENWINLAST = 911,
WM_POWER = 72,
WM_POWERBROADCAST = 536,
WM_PRINT = 791,
WM_PRINTCLIENT = 792,
WM_PSD_ENVSTAMPRECT = 1029,
WM_PSD_FULLPAGERECT = 1025,
WM_PSD_GREEKTEXTRECT = 1028,
WM_PSD_MARGINRECT = 1027,
WM_PSD_MINMARGINRECT = 1026,
WM_PSD_PAGESETUPDLG = 1024,
WM_PSD_YAFULLPAGERECT = 1030,
WM_QUERYDRAGICON = 55,
WM_QUERYENDSESSION = 17,
WM_QUERYNEWPALETTE = 783,
WM_QUERYOPEN = 19,
WM_QUEUESYNC = 35,
WM_QUIT = 18,
WM_RASDIALEVENT = 52429,
WM_RBUTTONDBLCLK = 518,
WM_RBUTTONDOWN = 516,
WM_RBUTTONUP = 517,
WM_RENDERALLFORMATS = 774,
WM_RENDERFORMAT = 773,
WM_SETCURSOR = 32,
WM_SETFOCUS = 7,
WM_SETFONT = 48,
WM_SETHOTKEY = 50,
WM_SETICON = 128,
WM_SETREDRAW = 11,
WM_SETTEXT = 12,
WM_SETTINGCHANGE = 26,
WM_SHOWWINDOW = 24,
WM_SIZE = 5,
WM_SIZECLIPBOARD = 779,
WM_SIZING = 532,
WM_SPOOLERSTATUS = 42,
WM_STYLECHANGED = 125,
WM_STYLECHANGING = 124,
WM_SYNCPAINT = 136,
WM_SYSCHAR = 262,
WM_SYSCOLORCHANGE = 21,
WM_SYSCOMMAND = 274,
WM_SYSDEADCHAR = 263,
WM_SYSKEYDOWN = 260,
WM_SYSKEYUP = 261,
WM_TCARD = 82,
WM_TIMECHANGE = 30,
WM_TIMER = 275,
WM_UNDO = 772,
WM_UNICHAR = 265,
WM_UNINITMENUPOPUP = 293,
WM_USER = 1024,
WM_USERCHANGED = 84,
WM_VKEYTOITEM = 46,
WM_VSCROLL = 277,
WM_VSCROLLCLIPBOARD = 778,
WM_WINDOWPOSCHANGED = 71,
WM_WINDOWPOSCHANGING = 70,
WM_WININICHANGE = 26,
WM_WNT_CONVERTREQUESTEX = 265,
}
Ich habe mir mal diese Enumeration zusammengeschustert. Die Namen habe
ich versucht leserlicher zu machen, bei einigen Abkürzungen war ich mir
aber nicht sicher...
namespace System.Native {
public enum WindowMessages : int {
UserFlag = 0x0400,
Null = 0x0000,
Create = 0x0001,
Destroy = 0x0002,
Move = 0x0003,
Size = 0x0005,
Activate = 0x0006,
SetFocus = 0x0007,
KillFocus = 0x0008,
Enable = 0x000A,
SetRedraw = 0x000B,
SetText = 0x000C,
GetText = 0x000D,
GetTextLength = 0x000E,
Paint = 0x000F,
Close = 0x0010,
QueryEndSession = 0x0011,
QueryOpen = 0x0013,
EndSession = 0x0016,
Quit = 0x0012,
EraseBackground = 0x0014,
SystemColorChange = 0x0015,
ShowWindow = 0x0018,
WinIniChange = 0x001A,
SettingChange = WindowMessages.WinIniChange,
DevModeChange = 0x001B,
ActivateApplication = 0x001C,
FontChange = 0x001D,
TimeChange = 0x001E,
CancelMode = 0x001F,
SetCursor = 0x0020,
MouseActivate = 0x0021,
ChildActivate = 0x0022,
QueueSync = 0x0023,
GetMinMaxInfo = 0x0024,
PaintIcon = 0x0026,
IconEraseBackground = 0x0027,
NextDialogControl = 0x0028,
SpoolerStatus = 0x002A,
DrawItem = 0x002B,
MeasureItem = 0x002C,
DeleteItem = 0x002D,
VirtualKeyToItem = 0x002E,
CharToItem = 0x002F,
SetFont = 0x0030,
GetFont = 0x0031,
SetHotKey = 0x0032,
GetHotKey = 0x0033,
QueryDragIcon = 0x0037,
CompareItem = 0x0039,
GetObject = 0x003D,
Compacting = 0x0041,
[Obsolete()] CommNotify = 0x0044,
WindowPositionChanging = 0x0046,
WindowPositionChanged = 0x0047,
Power = 0x0048,
CopyData = 0x004A,
CancelJournal = 0x004B,
Notify = 0x004E,
InputLanguageChangeRequest = 0x0050,
InputLanguageChange = 0x0051,
TCard = 0x0052,
Help = 0x0053,
UserChanged = 0x0054,
NotifyFormat = 0x0055,
ContextMenu = 0x007B,
StyleChanging = 0x007C,
StyleChanged= 0x007D,
DisplayChange = 0x007E,
GetIcon = 0x007F,
SetIcon = 0x0080,
NcCreate = 0x0081,
NcDestroy = 0x0082,
NcCalculateSize = 0x0083,
NcHitTest = 0x0084,
NcPaint = 0x0085,
NcActivate = 0x0086,
GetDialogCode = 0x0087,
SyncronizePaint = 0x0088,
NcMouseMove = 0x00A0,
NcLeftButtonDown = 0x00A1,
NcLeftButtonUp = 0x00A2,
NcLeftButtonDoubleClick = 0x00A3,
NcRightButtonDown = 0x00A4,
NcRightButtonUp = 0x00A5,
NcRifhtButtonDoubleClick = 0x00A6,
NcMiddleButtonDown = 0x00A7,
NcMiddleButtonUpP = 0x00A8,
NcMiddleButtonDoubleClick = 0x00A9,
NcXButtonDown = 0x00AB,
NcXButtonUp = 0x00AC,
NcXButtonDoubleClick = 0x00AD,
Input = 0x00FF,
KeyFirst = 0x0100,
KeyDown = 0x0100,
KeyUp = 0x0101,
Char = 0x0102,
DeadChar = 0x0103,
SystemKeyDown = 0x0104,
SystemKeyUp = 0x0105,
SystemChar = 0x0106,
SystemDeadChar = 0x0107,
UniChar = 0x0109,
KeyLast = 0x0109,
Unicode_NoChar = 0xFFFF,
// KeyLast = 0x0108,
ImeStartComposition = 0x010D,
ImeEndComposition = 0x010E,
ImeComposition = 0x010F,
ImeKeyLast = 0x010F,
InitializeDialog = 0x0110,
Command = 0x0111,
SystemCommand = 0x0112,
Timer = 0x0113,
HCommand = 0x0114,
VCommand = 0x0115,
InitializeMenu = 0x0116,
InitializeMenuPopup = 0x0117,
MenuSelect = 0x011F,
MenuChar = 0x0120,
EnterIdle = 0x0121,
MenuRightButtonUp = 0x0122,
MenuDrag = 0x0123,
MenuGetObject = 0x0124,
UninitMenuPopup = 0x0125,
MenuCommand = 0x0126,
ChangeUIState = 0x0127,
UpdateUIState = 0x0128,
QueryUIState = 0x0129,
ControlColorMessageBox = 0x0132,
ControlColorEdit = 0x0133,
ControlColorListbox = 0x0134,
ControlColorButton = 0x0135,
ControlColorDialog = 0x0136,
ControlColorCommandBar = 0x0137,
ControlColorStatic = 0x0138,
MouseFirst = 0x0200,
MouseMove = 0x0200,
LeftButtonDown = 0x0201,
LeftButtonUp = 0x0202,
LeftButtonDoubleClick = 0x0203,
RightButtonDown = 0x0204,
RightButtonUp = 0x0205,
RightButtonDoubleClick = 0x0206,
MiddleButtonDown = 0x0207,
MiddleButtonUp = 0x0208,
MiddleButtonDoubleClick = 0x0209,
MouseWheel = 0x020A,
XButtonDown = 0x020B,
XButtonUp = 0x020C,
XButtonDoubleClick = 0x020D,
MouseLast = 0x020D,
// MouseLast = 0x020A,
// MouseLast = 0x0209,
ParentNotify = 0x0210,
EnterMenuLoop = 0x0211,
ExitMenuLoop = 0x0212,
NextMenu = 0x0213,
Sizing = 0x0214,
CaptureChanged = 0x0215,
Moving = 0x0216,
PowerBroadcast = 0x0218,
DeviceChange = 0x0219,
MdiCreate = 0x0220,
MdiDestroy = 0x0221,
MdiActivate = 0x0222,
MdiRestore = 0x0223,
MdiNext = 0x0224,
MdiMaximize = 0x0225,
MdiTile = 0x0226,
MdiCascade = 0x0227,
MdiIconArrange = 0x0228,
MdiGetActive = 0x0229,
MdiSetMenu = 0x0230,
EnterSizeMove = 0x0231,
ExitSizeMove = 0x0232,
DropFiles = 0x0233,
MdiRefreshMenu = 0x0234,
ImeSetContext = 0x0281,
ImeNotify = 0x0282,
ImeControl = 0x0283,
ImeCompositionFull = 0x0284,
ImeSelect = 0x0285,
ImeChar = 0x0286,
ImeRequest = 0x0288,
ImeKeyDown = 0x0290,
ImeKeyUp = 0x0291,
MouseHover = 0x02A1,
MouseLeave = 0x02A3,
NCMouseHover = 0x02A0,
NCMouseLeave = 0x02A2,
WtsSessionChange = 0x02B1,
TabletFirst = 0x02c0,
TabletLast = 0x02df,
Cut = 0x0300,
Copy = 0x0301,
Paste = 0x0302,
Clear = 0x0303,
Undo = 0x0304,
RenderFormat = 0x0305,
RenderAllFormats = 0x0306,
DestroyClipboard = 0x0307,
DrawClipboard = 0x0308,
PaintClipboard = 0x0309,
VirtualCommandClipboard = 0x030A,
SizeClipboard = 0x030B,
AskClipboardFormatName = 0x030C,
ChangeClipboardChain = 0x030D,
HCommandClipboard = 0x030E,
QueryNewPalette = 0x030F,
PaletteIsChanging = 0x0310,
PaletteChanged = 0x0311,
HotKey = 0x0312,
Print = 0x0317,
PrintClient = 0x0318,
ApplicationCommand = 0x0319,
ThemeChanged = 0x031A,
HandheldFirst = 0x0358,
HandheldLast = 0x035F,
AfxFirst = 0x0360,
AfxLast = 0x037F,
PenWinFirst = 0x0380,
PenWinLast = 0x038F
}
}
--
Pascal Schmitt
> Ich habe mir mal diese Enumeration zusammengeschustert.
> Die Namen habe ich versucht leserlicher zu machen, bei einigen Abkürzungen war
> ich mir aber nicht sicher...
Das ist sicher eine gute Idee und eigentlich auch
im Sinne der Namensgebung von .NET (->PascalCase).
Als "Pascal Schmitt" eh ein Muss ;-)
Dennoch gibt es die Empfehlung, solche Windows-
Konstanten bzgl. der Benennung in der Urform zu
lassen, was IMHO auch eine gute Idee ist, denn
so wird Code-Einheitlichkeit gewährleistet.
Deswegen trifft man diese Benennungs-Formen
auch am häufigsten an.
> Hier sind alle Messages aus PlatformSDK/Include/ von VS.NET 2005.
Gut, diese Liste sieht recht vollständig aus. Man sieht man daran,
dass etliche (122) WM-Messages nicht vom Framework 1.1
benutzt/definiert werden (bei .NET 2.0 sind es zwei weniger).
Ich habe mir erlaubt, auf Dein Posting zu verlinken.