I did recently and it annoyed the hell out of me, and there was no easy way to find out what some of those numbers are. (ever tried searching the net for a hex or integer value? *laughs*) and digging through a PSDK .h include wasn't my idea of fun either.
This takes care of the known WM_ message id's I could find, and tells you their constant/defined name so you can easily search for them in the PSDK, MSDN or Google.
It is very possible that some id's are unknown, I'm sure Vista has a few new ones, and obviously user id's will always be unknown.
As you can see it is very easy to add message id's, so if somebody find more or additional id's then please post in this thread, and you only need to post the CASE lines so others can easily copy'n'paste the new lines in. Try to order the lines numerically as well.
PS! Remember to not include the procedure in released/final code ( unless this is intended) as it does add a few KB to the exe, even if the procedure is not used.
Code: Select all
;Note! PureBasic may not have constants defined for some the messages.
Procedure.s Debug_WindowMessageID(msg.l)
Protected txt$
Select msg
Case $0 : ;#WM_NULL, we'll ignore this one as it's a idle message.
Case $1 : txt$="WM_CREATE"
Case $2 : txt$="WM_DESTROY"
Case $3 : txt$="WM_MOVE"
Case $5 : txt$="WM_SIZE"
Case $6 : txt$="WM_ACTIVATE"
Case $7 : txt$="WM_SETFOCUS"
Case $8 : txt$="WM_KILLFOCUS"
Case $A : txt$="WM_ENABLE"
Case $B : txt$="WM_SETREDRAW"
Case $C : txt$="WM_SETTEXT"
Case $D : txt$="WM_GETTEXT"
Case $E : txt$="WM_GETTEXTLENGTH"
Case $F : txt$="WM_PAINT"
Case $10 : txt$="WM_CLOSE"
Case $11 : txt$="WM_QUERYENDSESSION"
Case $12 : txt$="WM_QUIT"
Case $13 : txt$="WM_QUERYOPEN"
Case $14 : txt$="WM_ERASEBKGND"
Case $15 : txt$="WM_SYSCOLORCHANGE"
Case $16 : txt$="WM_ENDSESSION"
Case $17 : txt$="WM_SYSTEMERROR"
Case $18 : txt$="WM_SHOWWINDOW"
Case $19 : txt$="WM_CTLCOLOR"
Case $1A : txt$="WM_SETTINGCHANGE"
Case $1A : txt$="WM_WININICHANGE"
Case $1B : txt$="WM_DEVMODECHANGE"
Case $1C : txt$="WM_ACTIVATEAPP"
Case $1D : txt$="WM_FONTCHANGE"
Case $1E : txt$="WM_TIMECHANGE"
Case $1F : txt$="WM_CANCELMODE"
Case $20 : txt$="WM_SETCURSOR"
Case $21 : txt$="WM_MOUSEACTIVATE"
Case $22 : txt$="WM_CHILDACTIVATE"
Case $23 : txt$="WM_QUEUESYNC"
Case $24 : txt$="WM_GETMINMAXINFO"
Case $26 : txt$="WM_PAINTICON"
Case $27 : txt$="WM_ICONERASEBKGND"
Case $28 : txt$="WM_NEXTDLGCTL"
Case $2A : txt$="WM_SPOOLERSTATUS"
Case $2B : txt$="WM_DRAWITEM"
Case $2C : txt$="WM_MEASUREITEM"
Case $2D : txt$="WM_DELETEITEM"
Case $2E : txt$="WM_VKEYTOITEM"
Case $2F : txt$="WM_CHARTOITEM"
Case $30 : txt$="WM_SETFONT"
Case $31 : txt$="WM_GETFONT"
Case $32 : txt$="WM_SETHOTKEY"
Case $33 : txt$="WM_GETHOTKEY"
Case $37 : txt$="WM_QUERYDRAGICON"
Case $39 : txt$="WM_COMPAREITEM"
Case $3D : txt$="WM_GETOBJECT"
Case $41 : txt$="WM_COMPACTING"
Case $44 : txt$="WM_COMMNOTIFY"
Case $46 : txt$="WM_WINDOWPOSCHANGING"
Case $47 : txt$="WM_WINDOWPOSCHANGED"
Case $48 : txt$="WM_POWER"
Case $4A : txt$="WM_COPYDATA"
Case $4B : txt$="WM_CANCELJOURNAL"
Case $4E : txt$="WM_NOTIFY"
Case $50 : txt$="WM_INPUTLANGCHANGEREQUEST"
Case $51 : txt$="WM_INPUTLANGCHANGE"
Case $52 : txt$="WM_TCARD"
Case $53 : txt$="WM_HELP"
Case $54 : txt$="WM_USERCHANGED"
Case $55 : txt$="WM_NOTIFYFORMAT"
Case $7B : txt$="WM_CONTEXTMENU"
Case $7C : txt$="WM_STYLECHANGING"
Case $7D : txt$="WM_STYLECHANGED"
Case $7E : txt$="WM_DISPLAYCHANGE"
Case $7F : txt$="WM_GETICON"
Case $80 : txt$="WM_SETICON"
Case $81 : txt$="WM_NCCREATE"
Case $82 : txt$="WM_NCDESTROY"
Case $83 : txt$="WM_NCCALCSIZE"
Case $84 : txt$="WM_NCHITTEST"
Case $85 : txt$="WM_NCPAINT"
Case $86 : txt$="WM_NCACTIVATE"
Case $87 : txt$="WM_GETDLGCODE"
Case $88 : txt$="WM_SYNCPAINT"
Case $A0 : txt$="WM_NCMOUSEMOVE"
Case $A1 : txt$="WM_NCLBUTTONDOWN"
Case $A2 : txt$="WM_NCLBUTTONUP"
Case $A3 : txt$="WM_NCLBUTTONDBLCLK"
Case $A4 : txt$="WM_NCRBUTTONDOWN"
Case $A5 : txt$="WM_NCRBUTTONUP"
Case $A6 : txt$="WM_NCRBUTTONDBLCLK"
Case $A7 : txt$="WM_NCMBUTTONDOWN"
Case $A8 : txt$="WM_NCMBUTTONUP"
Case $A9 : txt$="WM_NCMBUTTONDBLCLK"
Case $AB : txt$="WM_NCXBUTTONDOWN"
Case $AC : txt$="WM_NCXBUTTONUP"
Case $AD : txt$="WM_NCXBUTTONDBLCLK"
Case $FF : txt$="WM_INPUT"
Case $100 : txt$="WM_KEYDOWN"
Case $100 : txt$="WM_KEYFIRST"
Case $101 : txt$="WM_KEYUP"
Case $102 : txt$="WM_CHAR"
Case $103 : txt$="WM_DEADCHAR"
Case $104 : txt$="WM_SYSKEYDOWN"
Case $105 : txt$="WM_SYSKEYUP"
Case $106 : txt$="WM_SYSCHAR"
Case $107 : txt$="WM_SYSDEADCHAR"
Case $108 : txt$="WM_KEYLAST"
Case $109 : txt$="WM_KEYLAST"
Case $109 : txt$="WM_UNICHAR"
Case $10D : txt$="WM_IME_STARTCOMPOSITION"
Case $10E : txt$="WM_IME_ENDCOMPOSITION"
Case $10F : txt$="WM_IME_COMPOSITION"
Case $10F : txt$="WM_IME_KEYLAST"
Case $110 : txt$="WM_INITDIALOG"
Case $111 : txt$="WM_COMMAND"
Case $112 : txt$="WM_SYSCOMMAND"
Case $113 : txt$="WM_TIMER"
Case $114 : txt$="WM_HSCROLL"
Case $115 : txt$="WM_VSCROLL"
Case $116 : txt$="WM_INITMENU"
Case $117 : txt$="WM_INITMENUPOPUP"
Case $11F : txt$="WM_MENUSELECT"
Case $120 : txt$="WM_MENUCHAR"
Case $121 : txt$="WM_ENTERIDLE"
Case $122 : txt$="WM_MENURBUTTONUP"
Case $123 : txt$="WM_MENUDRAG"
Case $124 : txt$="WM_MENUGETOBJECT"
Case $125 : txt$="WM_UNINITMENUPOPUP"
Case $126 : txt$="WM_MENUCOMMAND"
Case $127 : txt$="WM_CHANGEUISTATE"
Case $128 : txt$="WM_UPDATEUISTATE"
Case $129 : txt$="WM_QUERYUISTATE"
Case $132 : txt$="WM_CTLCOLORMSGBOX"
Case $133 : txt$="WM_CTLCOLOREDIT"
Case $134 : txt$="WM_CTLCOLORLISTBOX"
Case $135 : txt$="WM_CTLCOLORBTN"
Case $136 : txt$="WM_CTLCOLORDLG"
Case $137 : txt$="WM_CTLCOLORSCROLLBAR"
Case $138 : txt$="WM_CTLCOLORSTATIC"
Case $1E1 : txt$="MN_GETHMENU"
Case $200 : txt$="WM_MOUSEFIRST"
Case $200 : txt$="WM_MOUSEMOVE"
Case $201 : txt$="WM_LBUTTONDOWN"
Case $202 : txt$="WM_LBUTTONUP"
Case $203 : txt$="WM_LBUTTONDBLCLK"
Case $204 : txt$="WM_RBUTTONDOWN"
Case $205 : txt$="WM_RBUTTONUP"
Case $206 : txt$="WM_RBUTTONDBLCLK"
Case $207 : txt$="WM_MBUTTONDOWN"
Case $208 : txt$="WM_MBUTTONUP"
Case $209 : txt$="WM_MBUTTONDBLCLK"
Case $209 : txt$="WM_MOUSELAST"
Case $20A : txt$="WM_MOUSELAST"
Case $20A : txt$="WM_MOUSEWHEEL"
Case $20B : txt$="WM_XBUTTONDOWN"
Case $20C : txt$="WM_XBUTTONUP"
Case $20D : txt$="WM_MOUSELAST"
Case $20D : txt$="WM_XBUTTONDBLCLK"
Case $210 : txt$="WM_PARENTNOTIFY"
Case $211 : txt$="WM_ENTERMENULOOP"
Case $212 : txt$="WM_EXITMENULOOP"
Case $213 : txt$="WM_NEXTMENU"
Case $214 : txt$="WM_SIZING"
Case $215 : txt$="WM_CAPTURECHANGED"
Case $216 : txt$="WM_MOVING"
Case $218 : txt$="WM_POWERBROADCAST"
Case $219 : txt$="WM_DEVICECHANGE"
Case $220 : txt$="WM_MDICREATE"
Case $221 : txt$="WM_MDIDESTROY"
Case $222 : txt$="WM_MDIACTIVATE"
Case $223 : txt$="WM_MDIRESTORE"
Case $224 : txt$="WM_MDINEXT"
Case $225 : txt$="WM_MDIMAXIMIZE"
Case $226 : txt$="WM_MDITILE"
Case $227 : txt$="WM_MDICASCADE"
Case $228 : txt$="WM_MDIICONARRANGE"
Case $229 : txt$="WM_MDIGETACTIVE"
Case $230 : txt$="WM_MDISETMENU"
Case $231 : txt$="WM_ENTERSIZEMOVE"
Case $232 : txt$="WM_EXITSIZEMOVE"
Case $233 : txt$="WM_DROPFILES"
Case $234 : txt$="WM_MDIREFRESHMENU"
Case $281 : txt$="WM_IME_SETCONTEXT"
Case $282 : txt$="WM_IME_NOTIFY"
Case $283 : txt$="WM_IME_CONTROL"
Case $284 : txt$="WM_IME_COMPOSITIONFULL"
Case $285 : txt$="WM_IME_SELECT"
Case $286 : txt$="WM_IME_CHAR"
Case $288 : txt$="WM_IME_REQUEST"
Case $290 : txt$="WM_IME_KEYDOWN"
Case $291 : txt$="WM_IME_KEYUP"
Case $2A0 : txt$="WM_NCMOUSEHOVER"
Case $2A1 : txt$="WM_MOUSEHOVER"
Case $2A2 : txt$="WM_NCMOUSELEAVE"
Case $2A3 : txt$="WM_MOUSELEAVE"
Case $2B1 : txt$="WM_WTSSESSION_CHANGE"
Case $2C0 : txt$="WM_TABLET_FIRST"
Case $2DF : txt$="WM_TABLET_LAST"
Case $300 : txt$="WM_CUT"
Case $301 : txt$="WM_COPY"
Case $302 : txt$="WM_PASTE"
Case $303 : txt$="WM_CLEAR"
Case $304 : txt$="WM_UNDO"
Case $305 : txt$="WM_RENDERFORMAT"
Case $306 : txt$="WM_RENDERALLFORMATS"
Case $307 : txt$="WM_DESTROYCLIPBOARD"
Case $308 : txt$="WM_DRAWCLIPBOARD"
Case $309 : txt$="WM_PAINTCLIPBOARD"
Case $30A : txt$="WM_VSCROLLCLIPBOARD"
Case $30B : txt$="WM_SIZECLIPBOARD"
Case $30C : txt$="WM_ASKCBFORMATNAME"
Case $30D : txt$="WM_CHANGECBCHAIN"
Case $30E : txt$="WM_HSCROLLCLIPBOARD"
Case $30F : txt$="WM_QUERYNEWPALETTE"
Case $310 : txt$="WM_PALETTEISCHANGING"
Case $311 : txt$="WM_PALETTECHANGED"
Case $312 : txt$="WM_HOTKEY"
Case $317 : txt$="WM_PRINT"
Case $318 : txt$="WM_PRINTCLIENT"
Case $319 : txt$="WM_APPCOMMAND"
Case $31A : txt$="WM_THEMECHANGED"
Case $358 : txt$="WM_HANDHELDFIRST"
Case $35F : txt$="WM_HANDHELDLAST"
Case $360 : txt$="WM_AFXFIRST"
Case $37F : txt$="WM_AFXLAST"
Case $380 : txt$="WM_PENWINFIRST"
Case $38F : txt$="WM_PENWINLAST"
Case $390 : txt$="WM_COALESCE_FIRST"
Case $39F : txt$="WM_COALESCE_LAST"
Case $3E0 : txt$="WM_DDE_FIRST"
Case $3E0 : txt$="WM_DDE_INITIATE"
Case $3E1 : txt$="WM_DDE_TERMINATE"
Case $3E2 : txt$="WM_DDE_ADVISE"
Case $3E3 : txt$="WM_DDE_UNADVISE"
Case $3E4 : txt$="WM_DDE_ACK"
Case $3E5 : txt$="WM_DDE_DATA"
Case $3E6 : txt$="WM_DDE_REQUEST"
Case $3E7 : txt$="WM_DDE_POKE"
Case $3E8 : txt$="WM_DDE_EXECUTE"
Case $3E8 : txt$="WM_DDE_LAST"
Case $400 : txt$="WM_USER"
Case $8000 : txt$="WM_APP"
Default : txt$="Unknown $"+Hex(msg)+" ("+Str(msg)+")"
EndSelect
CompilerIf #PB_Compiler_Debugger
If msg<>#WM_NULL
Debug txt$
EndIf
CompilerElse
If msg<>#WM_NULL
ProcedureReturn txt$
EndIf
CompilerEndIf
EndProcedure