ウィンドウ メッセージ
読み:ウィンドウ-メッセージ
外語:Window Message

 Windowsにおける、各種のイベントを表わすメッセージのこと。
目次

概要
 WindowsはイベントドリブンのOSであり、生じたイベントはウィンドウ メッセージとしてやりとりされる。
 イベントは、マウスのクリック、キー操作、タッチスクリーンでのジェスチャーなど目に見えるもののほか、ウィンドウの作成、初期化、終了など内部動作に関わるものまで様々なものがある。
 プログラムは、このようなイベントを受け取って、適時必要な動作をすることで、動作をしている。

特徴
 メッセージはUNIT型すなわちunsigned intであり、Win32(ILP32)およびWin64(LLP64)ともに32ビットである。
 元々Win16だった頃の影響を受けており、範囲は次のように16ビット範囲内で概ね定められている。
0x0000WM_USER-1システム用
WM_USER(0x0400)WM_APP-1プライベートウィンドウクラス用
WM_APP (0x8000)0xBFFFアプリケーション用整数メッセージ
0xC0000xFFFFRegisterWindowMessage() 文字列メッセージ
0x10000  将来のために予約
 アプリケーションが、システムのメッセージと衝突させずに独自のメッセージを作りたい場合、0x8000〜0xBFFFを用いることができる。
 0x8000はWM_APPとして定義されていることから、WM_APP+1、のようにWM_APPからのオフセットで表現すると分かり易い。

一覧
 コードはUINT型の実際の数値、Ver欄は対応するWindowsのバージョン、×WCEはWindows CEにはないメッセージ、である。

通常のウィンドウメッセージ(WM_*)
メッセージコードVer機能
WM_NULL0x0000 何もしない
WM_CREATE0x0001 ウィンドウ作成時
WM_DESTROY0x0002 ウィンドウのクローズ時
WM_MOVE0x0003  
WM_SIZE0x0005  
WM_ACTIVATE0x0006  
WM_SETFOCUS0x0007 フォーカス取得時
WM_KILLFOCUS0x0008 フォーカス喪失時
WM_ENABLE0x000A  
WM_SETREDRAW0x000B  
WM_SETTEXT0x000C  
WM_GETTEXT0x000D  
WM_GETTEXTLENGTH0x000E  
WM_PAINT0x000F 描画時
WM_CLOSE0x0010 ウィンドウのクローズ時
WM_QUERYENDSESSION0x0011 ×WCE Windowの終了時
WM_QUIT0x0012  
WM_QUERYOPEN0x0013 ×WCE
WM_ERASEBKGND0x0014  
WM_SYSCOLORCHANGE0x0015  
WM_ENDSESSION0x0016 ×WCE
WM_SHOWWINDOW0x0018  
WM_WININICHANGE0x001A  
WM_SETTINGCHANGE4.0 
WM_DEVMODECHANGE0x001B  
WM_ACTIVATEAPP0x001C  
WM_FONTCHANGE0x001D  
WM_TIMECHANGE0x001E  
WM_CANCELMODE0x001F  
WM_SETCURSOR0x0020  
WM_MOUSEACTIVATE0x0021  
WM_CHILDACTIVATE0x0022  
WM_QUEUESYNC0x0023  
WM_GETMINMAXINFO0x0024  
WM_PAINTICON0x0026  
WM_ICONERASEBKGND0x0027  
WM_NEXTDLGCTL0x0028  
WM_SPOOLERSTATUS0x002A  
WM_DRAWITEM0x002B  
WM_MEASUREITEM0x002C  
WM_DELETEITEM0x002D  
WM_VKEYTOITEM0x002E  
WM_CHARTOITEM0x002F  
WM_SETFONT0x0030  
WM_GETFONT0x0031  
WM_SETHOTKEY0x0032  
WM_GETHOTKEY0x0033  
WM_QUERYDRAGICON0x0037  
WM_COMPAREITEM0x0039  
WM_GETOBJECT0x003D5.0×WCE
WM_COMPACTING0x0041  
WM_COMMNOTIFY0x0044 (廃止)
WM_WINDOWPOSCHANGING0x0046  
WM_WINDOWPOSCHANGED0x0047  
WM_POWER0x0048  
WM_COPYDATA0x004A  
WM_CANCELJOURNAL0x004B  
WM_NOTIFY0x004E4.0 
WM_INPUTLANGCHANGEREQUEST0x00504.0 
WM_INPUTLANGCHANGE0x00514.0 
WM_TCARD0x00524.0 
WM_HELP0x00534.0 
WM_USERCHANGED0x00544.0 
WM_NOTIFYFORMAT0x00554.0 
WM_CONTEXTMENU0x007B4.0 
WM_STYLECHANGING0x007C4.0 
WM_STYLECHANGED0x007D4.0 
WM_DISPLAYCHANGE0x007E4.0 
WM_GETICON0x007F4.0 
WM_SETICON0x00804.0 
WM_NCCREATE0x0081  
WM_NCDESTROY0x0082  
WM_NCCALCSIZE0x0083  
WM_NCHITTEST0x0084  
WM_NCPAINT0x0085  
WM_NCACTIVATE0x0086  
WM_GETDLGCODE0x0087  
WM_SYNCPAINT0x0088 ×WCE
WM_NCMOUSEMOVE0x00A0  
WM_NCLBUTTONDOWN0x00A1  
WM_NCLBUTTONUP0x00A2  
WM_NCLBUTTONDBLCLK0x00A3  
WM_NCRBUTTONDOWN0x00A4  
WM_NCRBUTTONUP0x00A5  
WM_NCRBUTTONDBLCLK0x00A6  
WM_NCMBUTTONDOWN0x00A7  
WM_NCMBUTTONUP0x00A8  
WM_NCMBUTTONDBLCLK0x00A9  
WM_NCXBUTTONDOWN0x00AB5.0 
WM_NCXBUTTONUP0x00AC5.0 
WM_NCXBUTTONDBLCLK0x00AD5.0 
メッセージコードVer機能
WM_INPUT_DEVICE_CHANGE0x00FE5.1 
WM_INPUT0x00FF5.1 
メッセージコードVer機能
WM_KEYFIRST0x0100 キーイベントの最初
WM_KEYDOWN0x0100 非システムキー押下開始時
WM_KEYUP0x0101 非システムキー押下終了時
WM_CHAR0x0102 キーの非システムキャラ変換時
WM_DEADCHAR0x0103  
WM_SYSKEYDOWN0x0104 システムキー押下開始時
WM_SYSKEYUP0x0105 システムキー押下終了時
WM_SYSCHAR0x0106  
WM_SYSDEADCHAR0x0107  
WM_KEYLAST0x0108 キーイベントの最後
0x01095.1
WM_UNICHAR0x01095.1 
WM_IME_STARTCOMPOSITION0x010D4.0 
WM_IME_ENDCOMPOSITION0x010E4.0 
WM_IME_COMPOSITION0x010F4.0 
WM_IME_KEYLAST0x010F4.0 
メッセージコードVer機能
WM_INITDIALOG0x0110 ダイアログボックスの初期化時
WM_COMMAND0x0111 コマンド等
WM_SYSCOMMAND0x0112 システムコマンド等
WM_TIMER0x0113  
WM_HSCROLL0x0114  
WM_VSCROLL0x0115  
WM_INITMENU0x0116  
WM_INITMENUPOPUP0x0117  
WM_MENUSELECT0x011F  
WM_MENUCHAR0x0120  
WM_ENTERIDLE0x0121  
WM_MENURBUTTONUP0x01225.0×WCE
WM_MENUDRAG0x01235.0×WCE
WM_MENUGETOBJECT0x01245.0×WCE
WM_UNINITMENUPOPUP0x01255.0×WCE
WM_MENUCOMMAND0x01265.0×WCE
WM_CHANGEUISTATE0x01275.0×WCE
WM_UPDATEUISTATE0x01285.0×WCE
WM_QUERYUISTATE0x01295.0×WCE
WM_CTLCOLORMSGBOX0x0132  
WM_CTLCOLOREDIT0x0133  
WM_CTLCOLORLISTBOX0x0134  
WM_CTLCOLORBTN0x0135  
WM_CTLCOLORDLG0x0136  
WM_CTLCOLORSCROLLBAR0x0137  
WM_CTLCOLORSTATIC0x0138 スタティックコントロール等の描画
MN_GETHMENU0x01E1  
メッセージコードVer機能
WM_MOUSEFIRST0x0200 マウスイベントの最初
WM_MOUSEMOVE0x0200 マウス移動時
WM_LBUTTONDOWN0x0201 左クリック開始時
WM_LBUTTONUP0x0202 左クリック終了時
WM_LBUTTONDBLCLK0x0203 左ダブルクリック時
WM_RBUTTONDOWN0x0204  
WM_RBUTTONUP0x0205  
WM_RBUTTONDBLCLK0x0206  
WM_MBUTTONDOWN0x0207  
WM_MBUTTONUP0x0208  
WM_MBUTTONDBLCLK0x0209  
WM_MOUSEWHEEL0x020A4.0 
WM_XBUTTONDOWN0x020B5.0 
WM_XBUTTONUP0x020C5.0 
WM_XBUTTONDBLCLK0x020D5.0 
WM_MOUSEHWHEEL0x020E6.0 
WM_MOUSELAST0x0209 マウスイベントの最後
0x020A4.0
0x020D5.0
0x020E6.0
メッセージコードVer機能
WM_PARENTNOTIFY0x0210  
WM_ENTERMENULOOP0x0211  
WM_EXITMENULOOP0x0212  
WM_NEXTMENU0x02134.0 
WM_SIZING0x02144.0 
WM_CAPTURECHANGED0x02154.0 
WM_MOVING0x02164.0 
WM_POWERBROADCAST0x02184.0 
WM_DEVICECHANGE0x02194.0 
WM_MDICREATE0x0220  
WM_MDIDESTROY0x0221  
WM_MDIACTIVATE0x0222  
WM_MDIRESTORE0x0223  
WM_MDINEXT0x0224  
WM_MDIMAXIMIZE0x0225  
WM_MDITILE0x0226  
WM_MDICASCADE0x0227  
WM_MDIICONARRANGE0x0228  
WM_MDIGETACTIVE0x0229  
WM_MDISETMENU0x0230  
WM_ENTERSIZEMOVE0x0231  
WM_EXITSIZEMOVE0x0232  
WM_DROPFILES0x0233  
WM_MDIREFRESHMENU0x0234  
メッセージコードVer機能
WM_IME_SETCONTEXT0x02814.0 
WM_IME_NOTIFY0x02824.0 
WM_IME_CONTROL0x02834.0 
WM_IME_COMPOSITIONFULL0x02844.0 
WM_IME_SELECT0x02854.0 
WM_IME_CHAR0x02864.0 
WM_IME_REQUEST0x02885.0 
WM_IME_KEYDOWN0x02904.0 
WM_IME_KEYUP0x02914.0 
WM_MOUSEHOVER0x02A15.0 
WM_MOUSELEAVE0x02A35.0 
WM_NCMOUSEHOVER0x02A05.0 
WM_NCMOUSELEAVE0x02A25.0 
WM_WTSSESSION_CHANGE0x02B15.1 
WM_TABLET_FIRST0x02C05.1 
WM_TABLET_LAST0x02DF5.1 
メッセージコードVer機能
WM_CUT0x0300  
WM_COPY0x0301  
WM_PASTE0x0302  
WM_CLEAR0x0303  
WM_UNDO0x0304  
WM_RENDERFORMAT0x0305  
WM_RENDERALLFORMATS0x0306  
WM_DESTROYCLIPBOARD0x0307  
WM_DRAWCLIPBOARD0x0308  
WM_PAINTCLIPBOARD0x0309  
WM_VSCROLLCLIPBOARD0x030A  
WM_SIZECLIPBOARD0x030B  
WM_ASKCBFORMATNAME0x030C  
WM_CHANGECBCHAIN0x030D  
WM_HSCROLLCLIPBOARD0x030E  
WM_QUERYNEWPALETTE0x030F  
WM_PALETTEISCHANGING0x0310  
WM_PALETTECHANGED0x0311  
WM_HOTKEY0x0312  
WM_PRINT0x03174.0 
WM_PRINTCLIENT0x03184.0 
WM_APPCOMMAND0x03195.0 
WM_THEMECHANGED0x031A5.1 
WM_CLIPBOARDUPDATE0x031D5.1 
WM_DWMCOMPOSITIONCHANGED0x031E6.0 
WM_DWMNCRENDERINGCHANGED0x031F6.0 
WM_DWMCOLORIZATIONCOLORCHANGED0x03206.0 
WM_DWMWINDOWMAXIMIZEDCHANGE0x03216.0 
WM_GETTITLEBARINFOEX0x033F6.0 
WM_HANDHELDFIRST0x03584.0 
WM_HANDHELDLAST0x035F4.0 
WM_AFXFIRST0x03604.0 
WM_AFXLAST0x037F4.0 
WM_PENWINFIRST0x0380  
WM_PENWINLAST0x038F  
WM_USER0x0400 プライベートウィンドウクラスで使うメッセージの下限
WM_APP0x80004.00x8000〜0xBFFFはユーザー用
 WM_USERについては後述。

エディットコントロールメッセージ(EM_*)
 NOWINMESSAGESマクロが定義されていると、定義されない。
メッセージコードVer機能
EM_GETSEL0x00B0  
EM_SETSEL0x00B1  
EM_GETRECT0x00B2  
EM_SETRECT0x00B3  
EM_SETRECTNP0x00B4  
EM_SCROLL0x00B5  
EM_LINESCROLL0x00B6  
EM_SCROLLCARET0x00B7  
EM_GETMODIFY0x00B8  
EM_SETMODIFY0x00B9  
EM_GETLINECOUNT0x00BA  
EM_LINEINDEX0x00BB  
EM_SETHANDLE0x00BC  
EM_GETHANDLE0x00BD  
EM_GETTHUMB0x00BE  
EM_LINELENGTH0x00C1  
EM_REPLACESEL0x00C2  
EM_GETLINE0x00C4  
EM_LIMITTEXT0x00C5  
EM_CANUNDO0x00C6  
EM_UNDO0x00C7  
EM_FMTLINES0x00C8  
EM_LINEFROMCHAR0x00C9  
EM_SETTABSTOPS0x00CB  
EM_SETPASSWORDCHAR0x00CC  
EM_EMPTYUNDOBUFFER0x00CD  
EM_GETFIRSTVISIBLELINE0x00CE  
EM_SETREADONLY0x00CF  
EM_SETWORDBREAKPROC0x00D0  
EM_GETWORDBREAKPROC0x00D1  
EM_GETPASSWORDCHAR0x00D2  
EM_SETMARGINS0x00D34.0 
EM_GETMARGINS0x00D44.0 
EM_GETLIMITTEXT0x00D54.0 
EM_LIMITTEXT 
EM_POSFROMCHAR0x00D64.0 
EM_CHARFROMPOS0x00D74.0 
EM_SETIMESTATUS0x00D85.0 
EM_GETIMESTATUS0x00D95.0 

スクロールバーメッセージ(SBM_*)
 NOWINMESSAGESマクロが定義されていると、定義されない。
メッセージコードVer機能
SBM_SETPOS0x00E0 ×Win3.1
SBM_GETPOS0x00E1 ×Win3.1
SBM_SETRANGE0x00E2 ×Win3.1
SBM_SETRANGEREDRAW0x00E6 ×Win3.1
SBM_GETRANGE0x00E3 ×Win3.1
SBM_ENABLE_ARROWS0x00E4 ×Win3.1
SBM_SETSCROLLINFO0x00E94.0 
SBM_GETSCROLLINFO0x00EA4.0 
SBM_GETSCROLLBARINFO0x00EB5.1 

ボタンコントロールメッセージ(BM_*)
メッセージコードVer機能
BM_GETCHECK0x00F0  
BM_SETCHECK0x00F1  
BM_GETSTATE0x00F2  
BM_SETSTATE0x00F3  
BM_SETSTYLE0x00F4  
BM_CLICK0x00F54.0 
BM_GETIMAGE0x00F64.0 
BM_SETIMAGE0x00F74.0 
BM_SETDONTCLICK0x00F86.0 

コンボボックスコントロールメッセージ(CB_*)
 NOWINMESSAGESマクロが定義されていると、定義されない。
メッセージコードVer機能
CB_GETEDITSEL0x0140  
CB_LIMITTEXT0x0141  
CB_SETEDITSEL0x0142  
CB_ADDSTRING0x0143  
CB_DELETESTRING0x0144  
CB_DIR0x0145  
CB_GETCOUNT0x0146  
CB_GETCURSEL0x0147  
CB_GETLBTEXT0x0148  
CB_GETLBTEXTLEN0x0149  
CB_INSERTSTRING0x014A  
CB_RESETCONTENT0x014B  
CB_FINDSTRING0x014C  
CB_SELECTSTRING0x014D  
CB_SETCURSEL0x014E  
CB_SHOWDROPDOWN0x014F  
CB_GETITEMDATA0x0150  
CB_SETITEMDATA0x0151  
CB_GETDROPPEDCONTROLRECT0x0152  
CB_SETITEMHEIGHT0x0153  
CB_GETITEMHEIGHT0x0154  
CB_SETEXTENDEDUI0x0155  
CB_GETEXTENDEDUI0x0156  
CB_GETDROPPEDSTATE0x0157  
CB_FINDSTRINGEXACT0x0158  
CB_SETLOCALE0x0159  
CB_GETLOCALE0x015A  
CB_GETTOPINDEX0x015B4.0 
CB_SETTOPINDEX0x015C4.0 
CB_GETHORIZONTALEXTENT0x015D4.0 
CB_SETHORIZONTALEXTENT0x015E4.0 
CB_GETDROPPEDWIDTH0x015F4.0 
CB_SETDROPPEDWIDTH0x01604.0 
CB_INITSTORAGE0x01614.0 
CB_MULTIPLEADDSTRING0x01634.0WCE専用
CB_GETCOMBOBOXINFO0x01645.1 
CB_MSGMAX0x015B メッセージの最後(WCE 4.0は0x0163)
0x01624.0
0x01634.0
0x01655.1

スタティックスコントロールメッセージ(STM_*)
 NOWINMESSAGESマクロが定義されていると、定義されない。
メッセージコードVer機能
STM_SETICON0x0170  
STM_GETICON0x0171  
STM_SETIMAGE0x01724.0 
STM_GETIMAGE0x01734.0 
STM_MSGMAX0x0174  

リストボックスコントロールメッセージ(LB_*)
 NOWINMESSAGESマクロが定義されていると、定義されない。
メッセージコードVer機能
LB_ADDSTRING0x0180  
LB_INSERTSTRING0x0181  
LB_DELETESTRING0x0182  
LB_SELITEMRANGEEX0x0183  
LB_RESETCONTENT0x0184  
LB_SETSEL0x0185  
LB_SETCURSEL0x0186  
LB_GETSEL0x0187  
LB_GETCURSEL0x0188  
LB_GETTEXT0x0189  
LB_GETTEXTLEN0x018A  
LB_GETCOUNT0x018B  
LB_SELECTSTRING0x018C  
LB_DIR0x018D  
LB_GETTOPINDEX0x018E  
LB_FINDSTRING0x018F  
LB_GETSELCOUNT0x0190  
LB_GETSELITEMS0x0191  
LB_SETTABSTOPS0x0192  
LB_GETHORIZONTALEXTENT0x0193  
LB_SETHORIZONTALEXTENT0x0194  
LB_SETCOLUMNWIDTH0x0195  
LB_ADDFILE0x0196  
LB_SETTOPINDEX0x0197  
LB_GETITEMRECT0x0198  
LB_GETITEMDATA0x0199  
LB_SETITEMDATA0x019A  
LB_SELITEMRANGE0x019B  
LB_SETANCHORINDEX0x019C  
LB_GETANCHORINDEX0x019D  
LB_SETCARETINDEX0x019E  
LB_GETCARETINDEX0x019F  
LB_SETITEMHEIGHT0x01A0  
LB_GETITEMHEIGHT0x01A1  
LB_FINDSTRINGEXACT0x01A2  
LB_SETLOCALE0x01A5  
LB_GETLOCALE0x01A6  
LB_SETCOUNT0x01A7  
LB_INITSTORAGE0x01A84.0 
LB_ITEMFROMPOINT0x01A94.0 
LB_MULTIPLEADDSTRING0x01B14.0WCE専用
LB_GETLISTBOXINFO0x01B25.1 
LB_MSGMAX0x01A8 メッセージの最後(WCE 4.0は0x01B1)
0x01B04.0
0x01B14.0
0x01B35.1

補足

WM_USER
 コモンコントロールなど、プライベートウィンドウクラスの以下のメッセージはWM_USERつまり0x0400からのオフセットで定義されている。
 このメッセージは、アプリケーションではなく、ウィンドウクラスにとってプライベートとなっている。つまりアプリケーションの範囲で見ると、他のコントロールのメッセージと重複する。

コントロールメッセージ
 各種コントロール用として、0x1000から0x100ごとに重複しないよう範囲が定義されており、次のようなコントロールが定義されている。
 また、0x2000から0x2200までは、コモンコントロール共有メッセージとして定義されている。

再検索