Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Support Forum
Download Visual Studio Add-In

Terms of Use
Privacy Policy
WindowsMessages (Enums)
 
.
Summary
C# and VB enums of many of the Windows Messages.

To see definitions of these messages, see http://www.pinvoke.net/default.aspx/Constants/WM.html

If you know a definition/description of one or more of these messages, PLEASE add it to the above page. Use one of the already created definitions as an example.

C# Definition:

public enum WindowsMessages
{
    WM_ACTIVATE = 0x6,
    WM_ACTIVATEAPP = 0x1C,
    WM_AFXFIRST = 0x360,
    WM_AFXLAST = 0x37F,
    WM_APP = 0x8000,
    WM_ASKCBFORMATNAME = 0x30C,
    WM_CANCELJOURNAL = 0x4B,
    WM_CANCELMODE = 0x1F,
    WM_CAPTURECHANGED = 0x215,
    WM_CHANGECBCHAIN = 0x30D,
    WM_CHAR = 0x102,
    WM_CHARTOITEM = 0x2F,
    WM_CHILDACTIVATE = 0x22,
    WM_CLEAR = 0x303,
    WM_CLOSE = 0x10,
    WM_COMMAND = 0x111,
    WM_COMPACTING = 0x41,
    WM_COMPAREITEM = 0x39,
    WM_CONTEXTMENU = 0x7B,
    WM_COPY = 0x301,
    WM_COPYDATA = 0x4A,
    WM_CREATE = 0x1,
    WM_CTLCOLORBTN = 0x135,
    WM_CTLCOLORDLG = 0x136,
    WM_CTLCOLOREDIT = 0x133,
    WM_CTLCOLORLISTBOX = 0x134,
    WM_CTLCOLORMSGBOX = 0x132,
    WM_CTLCOLORSCROLLBAR = 0x137,
    WM_CTLCOLORSTATIC = 0x138,
    WM_CUT = 0x300,
    WM_DEADCHAR = 0x103,
    WM_DELETEITEM = 0x2D,
    WM_DESTROY = 0x2,
    WM_DESTROYCLIPBOARD = 0x307,
    WM_DEVICECHANGE = 0x219,
    WM_DEVMODECHANGE = 0x1B,
    WM_DISPLAYCHANGE = 0x7E,
    WM_DRAWCLIPBOARD = 0x308,
    WM_DRAWITEM = 0x2B,
    WM_DROPFILES = 0x233,
    WM_ENABLE = 0xA,
    WM_ENDSESSION = 0x16,
    WM_ENTERIDLE = 0x121,
    WM_ENTERMENULOOP = 0x211,
    WM_ENTERSIZEMOVE = 0x231,
    WM_ERASEBKGND = 0x14,
    WM_EXITMENULOOP = 0x212,
    WM_EXITSIZEMOVE = 0x232,
    WM_FONTCHANGE = 0x1D,
    WM_GETDLGCODE = 0x87,
    WM_GETFONT = 0x31,
    WM_GETHOTKEY = 0x33,
    WM_GETICON = 0x7F,
    WM_GETMINMAXINFO = 0x24,
    WM_GETOBJECT = 0x3D,
    WM_GETSYSMENU = 0x313,
    WM_GETTEXT = 0xD,
    WM_GETTEXTLENGTH = 0xE,
    WM_HANDHELDFIRST = 0x358,
    WM_HANDHELDLAST = 0x35F,
    WM_HELP = 0x53,
    WM_HOTKEY = 0x312,
    WM_HSCROLL = 0x114,
    WM_HSCROLLCLIPBOARD = 0x30E,
    WM_ICONERASEBKGND = 0x27,
    WM_IME_CHAR = 0x286,
    WM_IME_COMPOSITION = 0x10F,
    WM_IME_COMPOSITIONFULL = 0x284,
    WM_IME_CONTROL = 0x283,
    WM_IME_ENDCOMPOSITION = 0x10E,
    WM_IME_KEYDOWN = 0x290,
    WM_IME_KEYLAST = 0x10F,
    WM_IME_KEYUP = 0x291,
    WM_IME_NOTIFY = 0x282,
    WM_IME_REQUEST = 0x288,
    WM_IME_SELECT = 0x285,
    WM_IME_SETCONTEXT = 0x281,
    WM_IME_STARTCOMPOSITION = 0x10D,
    WM_INITDIALOG = 0x110,
    WM_INITMENU = 0x116,
    WM_INITMENUPOPUP = 0x117,
    WM_INPUTLANGCHANGE = 0x51,
    WM_INPUTLANGCHANGEREQUEST = 0x50,
    WM_KEYDOWN = 0x100,
    WM_KEYFIRST = 0x100,
    WM_KEYLAST = 0x108,
    WM_KEYUP = 0x101,
    WM_KILLFOCUS = 0x8,
    WM_LBUTTONDBLCLK = 0x203,
    WM_LBUTTONDOWN = 0x201,
    WM_LBUTTONUP = 0x202,
    WM_MBUTTONDBLCLK = 0x209,
    WM_MBUTTONDOWN = 0x207,
    WM_MBUTTONUP = 0x208,
    WM_MDIACTIVATE = 0x222,
    WM_MDICASCADE = 0x227,
    WM_MDICREATE = 0x220,
    WM_MDIDESTROY = 0x221,
    WM_MDIGETACTIVE = 0x229,
    WM_MDIICONARRANGE = 0x228,
    WM_MDIMAXIMIZE = 0x225,
    WM_MDINEXT = 0x224,
    WM_MDIREFRESHMENU = 0x234,
    WM_MDIRESTORE = 0x223,
    WM_MDISETMENU = 0x230,
    WM_MDITILE = 0x226,
    WM_MEASUREITEM = 0x2C,
    WM_MENUCHAR = 0x120,
    WM_MENUCOMMAND = 0x126,
    WM_MENUDRAG = 0x123,
    WM_MENUGETOBJECT = 0x124,
    WM_MENURBUTTONUP = 0x122,
    WM_MENUSELECT = 0x11F,
    WM_MOUSEACTIVATE = 0x21,
    WM_MOUSEFIRST = 0x200,
    WM_MOUSEHOVER = 0x2A1,
    WM_MOUSELAST = 0x20A,
    WM_MOUSELEAVE = 0x2A3,
    WM_MOUSEMOVE = 0x200,
    WM_MOUSEWHEEL = 0x20A,
    WM_MOVE = 0x3,
    WM_MOVING = 0x216,
    WM_NCACTIVATE = 0x86,
    WM_NCCALCSIZE = 0x83,
    WM_NCCREATE = 0x81,
    WM_NCDESTROY = 0x82,
    WM_NCHITTEST = 0x84,
    WM_NCLBUTTONDBLCLK = 0xA3,
    WM_NCLBUTTONDOWN = 0xA1,
    WM_NCLBUTTONUP = 0xA2,
    WM_NCMBUTTONDBLCLK = 0xA9,
    WM_NCMBUTTONDOWN = 0xA7,
    WM_NCMBUTTONUP = 0xA8,
    WM_NCMOUSEHOVER = 0x2A0,
    WM_NCMOUSELEAVE = 0x2A2,
    WM_NCMOUSEMOVE = 0xA0,
    WM_NCPAINT = 0x85,
    WM_NCRBUTTONDBLCLK = 0xA6,
    WM_NCRBUTTONDOWN = 0xA4,
    WM_NCRBUTTONUP = 0xA5,
    WM_NEXTDLGCTL = 0x28,
    WM_NEXTMENU = 0x213,
    WM_NOTIFY = 0x4E,
    WM_NOTIFYFORMAT = 0x55,
    WM_NULL = 0x0,
    WM_PAINT = 0xF,
    WM_PAINTCLIPBOARD = 0x309,
    WM_PAINTICON = 0x26,
    WM_PALETTECHANGED = 0x311,
    WM_PALETTEISCHANGING = 0x310,
    WM_PARENTNOTIFY = 0x210,
    WM_PASTE = 0x302,
    WM_PENWINFIRST = 0x380,
    WM_PENWINLAST = 0x38F,
    WM_POWER = 0x48,
    WM_PRINT = 0x317,
    WM_PRINTCLIENT = 0x318,
    WM_QUERYDRAGICON = 0x37,
    WM_QUERYENDSESSION = 0x11,
    WM_QUERYNEWPALETTE = 0x30F,
    WM_QUERYOPEN = 0x13,
    WM_QUERYUISTATE = 0x129,
    WM_QUEUESYNC = 0x23,
    WM_QUIT = 0x12,
    WM_RBUTTONDBLCLK = 0x206,
    WM_RBUTTONDOWN = 0x204,
    WM_RBUTTONUP = 0x205,
    WM_RENDERALLFORMATS = 0x306,
    WM_RENDERFORMAT = 0x305,
    WM_SETCURSOR = 0x20,
    WM_SETFOCUS = 0x7,
    WM_SETFONT = 0x30,
    WM_SETHOTKEY = 0x32,
    WM_SETICON = 0x80,
    WM_SETREDRAW = 0xB,
    WM_SETTEXT = 0xC,
    WM_SETTINGCHANGE = 0x1A,
    WM_SHOWWINDOW = 0x18,
    WM_SIZE = 0x5,
    WM_SIZECLIPBOARD = 0x30B,
    WM_SIZING = 0x214,
    WM_SPOOLERSTATUS = 0x2A,
    WM_STYLECHANGED = 0x7D,
    WM_STYLECHANGING = 0x7C,
    WM_SYNCPAINT = 0x88,
    WM_SYSCHAR = 0x106,
    WM_SYSCOLORCHANGE = 0x15,
    WM_SYSCOMMAND = 0x112,
    WM_SYSDEADCHAR = 0x107,
    WM_SYSKEYDOWN = 0x104,
    WM_SYSKEYUP = 0x105,
    WM_SYSTIMER = 0x118,  // undocumented, see http://support.microsoft.com/?id=108938
    WM_TCARD = 0x52,
    WM_TIMECHANGE = 0x1E,
    WM_TIMER = 0x113,
    WM_UNDO = 0x304,
    WM_UNINITMENUPOPUP = 0x125,
    WM_USER = 0x400,
    WM_USERCHANGED = 0x54,
    WM_VKEYTOITEM = 0x2E,
    WM_VSCROLL = 0x115,
    WM_VSCROLLCLIPBOARD = 0x30A,
    WM_WINDOWPOSCHANGED = 0x47,
    WM_WINDOWPOSCHANGING = 0x46,
    WM_WININICHANGE = 0x1A,
    WM_XBUTTONDBLCLK = 0x20D,
    WM_XBUTTONDOWN = 0x20B,
    WM_XBUTTONUP = 0x20C
}

VB Definition:

Enum WindowMessages
     WM_ACTIVATE = &H6
     WM_ACTIVATEAPP = &H1C
     WM_AFXFIRST = &H360
     WM_AFXLAST = &H37F
     WM_APP = &H8000
     WM_ASKCBFORMATNAME = &H30C
     WM_CANCELJOURNAL = &H4B
     WM_CANCELMODE = &H1F
     WM_CAPTURECHANGED = &H215
     WM_CHANGECBCHAIN = &H30D
     WM_CHAR = &H102
     WM_CHARTOITEM = &H2F
     WM_CHILDACTIVATE = &H22
     WM_CLEAR = &H303
     WM_CLOSE = &H10
     WM_COMMAND = &H111
     WM_COMPACTING = &H41
     WM_COMPAREITEM = &H39
     WM_CONTEXTMENU = &H7B
     WM_COPY = &H301
     WM_COPYDATA = &H4A
     WM_CREATE = &H1
     WM_CTLCOLORBTN = &H135
     WM_CTLCOLORDLG = &H136
     WM_CTLCOLOREDIT = &H133
     WM_CTLCOLORLISTBOX = &H134
     WM_CTLCOLORMSGBOX = &H132
     WM_CTLCOLORSCROLLBAR = &H137
     WM_CTLCOLORSTATIC = &H138
     WM_CUT = &H300
     WM_DEADCHAR = &H103
     WM_DELETEITEM = &H2D
     WM_DESTROY = &H2
     WM_DESTROYCLIPBOARD = &H307
     WM_DEVICECHANGE = &H219
     WM_DEVMODECHANGE = &H1B
     WM_DISPLAYCHANGE = &H7E
     WM_DRAWCLIPBOARD = &H308
     WM_DRAWITEM = &H2B
     WM_DROPFILES = &H233
     WM_ENABLE = &HA
     WM_ENDSESSION = &H16
     WM_ENTERIDLE = &H121
     WM_ENTERMENULOOP = &H211
     WM_ENTERSIZEMOVE = &H231
     WM_ERASEBKGND = &H14
     WM_EXITMENULOOP = &H212
     WM_EXITSIZEMOVE = &H232
     WM_FONTCHANGE = &H1D
     WM_GETDLGCODE = &H87
     WM_GETFONT = &H31
     WM_GETHOTKEY = &H33
     WM_GETICON = &H7F
     WM_GETMINMAXINFO = &H24
     WM_GETOBJECT = &H3D
     WM_GETSYSMENU = &H313
     WM_GETTEXT = &HD
     WM_GETTEXTLENGTH = &HE
     WM_HANDHELDFIRST = &H358
     WM_HANDHELDLAST = &H35F
     WM_HELP = &H53
     WM_HOTKEY = &H312
     WM_HSCROLL = &H114
     WM_HSCROLLCLIPBOARD = &H30E
     WM_ICONERASEBKGND = &H27
     WM_IME_CHAR = &H286
     WM_IME_COMPOSITION = &H10F
     WM_IME_COMPOSITIONFULL = &H284
     WM_IME_CONTROL = &H283
     WM_IME_ENDCOMPOSITION = &H10E
     WM_IME_KEYDOWN = &H290
     WM_IME_KEYLAST = &H10F
     WM_IME_KEYUP = &H291
     WM_IME_NOTIFY = &H282
     WM_IME_REQUEST = &H288
     WM_IME_SELECT = &H285
     WM_IME_SETCONTEXT = &H281
     WM_IME_STARTCOMPOSITION = &H10D
     WM_INITDIALOG = &H110
     WM_INITMENU = &H116
     WM_INITMENUPOPUP = &H117
     WM_INPUTLANGCHANGE = &H51
     WM_INPUTLANGCHANGEREQUEST = &H50
     WM_KEYDOWN = &H100
     WM_KEYFIRST = &H100
     WM_KEYLAST = &H108
     WM_KEYUP = &H101
     WM_KILLFOCUS = &H8
     WM_LBUTTONDBLCLK = &H203
     WM_LBUTTONDOWN = &H201
     WM_LBUTTONUP = &H202
     WM_MBUTTONDBLCLK = &H209
     WM_MBUTTONDOWN = &H207
     WM_MBUTTONUP = &H208
     WM_MDIACTIVATE = &H222
     WM_MDICASCADE = &H227
     WM_MDICREATE = &H220
     WM_MDIDESTROY = &H221
     WM_MDIGETACTIVE = &H229
     WM_MDIICONARRANGE = &H228
     WM_MDIMAXIMIZE = &H225
     WM_MDINEXT = &H224
     WM_MDIREFRESHMENU = &H234
     WM_MDIRESTORE = &H223
     WM_MDISETMENU = &H230
     WM_MDITILE = &H226
     WM_MEASUREITEM = &H2C
     WM_MENUCHAR = &H120
     WM_MENUCOMMAND = &H126
     WM_MENUDRAG = &H123
     WM_MENUGETOBJECT = &H124
     WM_MENURBUTTONUP = &H122
     WM_MENUSELECT = &H11F
     WM_MOUSEACTIVATE = &H21
     WM_MOUSEFIRST = &H200
     WM_MOUSEHOVER = &H2A1
     WM_MOUSELAST = &H20A
     WM_MOUSELEAVE = &H2A3
     WM_MOUSEMOVE = &H200
     WM_MOUSEWHEEL = &H20A
     WM_MOVE = &H3
     WM_MOVING = &H216
     WM_NCACTIVATE = &H86
     WM_NCCALCSIZE = &H83
     WM_NCCREATE = &H81
     WM_NCDESTROY = &H82
     WM_NCHITTEST = &H84
     WM_NCLBUTTONDBLCLK = &HA3
     WM_NCLBUTTONDOWN = &HA1
     WM_NCLBUTTONUP = &HA2
     WM_NCMBUTTONDBLCLK = &HA9
     WM_NCMBUTTONDOWN = &HA7
     WM_NCMBUTTONUP = &HA8
     WM_NCMOUSEHOVER = &H2A0
     WM_NCMOUSELEAVE = &H2A2
     WM_NCMOUSEMOVE = &HA0
     WM_NCPAINT = &H85
     WM_NCRBUTTONDBLCLK = &HA6
     WM_NCRBUTTONDOWN = &HA4
     WM_NCRBUTTONUP = &HA5
     WM_NEXTDLGCTL = &H28
     WM_NEXTMENU = &H213
     WM_NOTIFY = &H4E
     WM_NOTIFYFORMAT = &H55
     WM_NULL = &H0
     WM_PAINT = &HF
     WM_PAINTCLIPBOARD = &H309
     WM_PAINTICON = &H26
     WM_PALETTECHANGED = &H311
     WM_PALETTEISCHANGING = &H310
     WM_PARENTNOTIFY = &H210
     WM_PASTE = &H302
     WM_PENWINFIRST = &H380
     WM_PENWINLAST = &H38F
     WM_POWER = &H48
     WM_PRINT = &H317
     WM_PRINTCLIENT = &H318
     WM_QUERYDRAGICON = &H37
     WM_QUERYENDSESSION = &H11
     WM_QUERYNEWPALETTE = &H30F
     WM_QUERYOPEN = &H13
     WM_QUERYUISTATE = &H129
     WM_QUEUESYNC = &H23
     WM_QUIT = &H12
     WM_RBUTTONDBLCLK = &H206
     WM_RBUTTONDOWN = &H204
     WM_RBUTTONUP = &H205
     WM_RENDERALLFORMATS = &H306
     WM_RENDERFORMAT = &H305
     WM_SETCURSOR = &H20
     WM_SETFOCUS = &H7
     WM_SETFONT = &H30
     WM_SETHOTKEY = &H32
     WM_SETICON = &H80
     WM_SETREDRAW = &HB
     WM_SETTEXT = &HC
     WM_SETTINGCHANGE = &H1A
     WM_SHOWWINDOW = &H18
     WM_SIZE = &H5
     WM_SIZECLIPBOARD = &H30B
     WM_SIZING = &H214
     WM_SPOOLERSTATUS = &H2A
     WM_STYLECHANGED = &H7D
     WM_STYLECHANGING = &H7C
     WM_SYNCPAINT = &H88
     WM_SYSCHAR = &H106
     WM_SYSCOLORCHANGE = &H15
     WM_SYSCOMMAND = &H112
     WM_SYSDEADCHAR = &H107
     WM_SYSKEYDOWN = &H104
     WM_SYSKEYUP = &H105
     WM_SYSTIMER = &H118  ' undocumented, see http://support.microsoft.com/?id=108938
     WM_TCARD = &H52
     WM_TIMECHANGE = &H1E
     WM_TIMER = &H113
     WM_UNDO = &H304
     WM_UNINITMENUPOPUP = &H125
     WM_USER = &H400
     WM_USERCHANGED = &H54
     WM_VKEYTOITEM = &H2E
     WM_VSCROLL = &H115
     WM_VSCROLLCLIPBOARD = &H30A
     WM_WINDOWPOSCHANGED = &H47
     WM_WINDOWPOSCHANGING = &H46
     WM_WININICHANGE = &H1A
     WM_XBUTTONDBLCLK = &H20D
     WM_XBUTTONDOWN  = &H20B
     WM_XBUTTONUP = &H20C
End Enum

Notes:

WM_SIZING:

You may want to use the custom-built SizingWindowSide enumeration for the wParam passed in with this message.

Documentation
wm_sizing on MSDN
WM_NCHITTEST:

You may want to use the custom-built WindowHitTestRegions enumeration for the Result generated by this message.

Documentation

Overall:

Documentation

Example - C#

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Runtime.InteropServices;

namespace WindowsApplication1

{

    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        [DllImport("user32.dll")]
        private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
        [DllImport("user32.dll")]
        private static extern bool InsertMenu (IntPtr hMenu, Int32 wPosition, Int32 wFlags, Int32 wIDNewItem, string lpNewItem);

        public const Int32 WM_SYSCOMMAND = 0x112;
        public const Int32 MF_SEPARATOR = 0x800;
        public const Int32 MF_BYPOSITION = 0x400;
        public const Int32 MF_STRING = 0x0;
        public const Int32 MenuItem1  = 1000;
        public const Int32 MenuItem2 = 1001;
        public const Int32 WM_CLOSE = 0xF060;

        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(528, 266);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        protected override void WndProc(ref Message m)
        {
            if(m.Msg == 0x112)
            {
                switch(m.WParam.ToInt32())
                {
                    case MenuItem1:
                        MessageBox.Show("Clicked MenuItem1");
                        return;
                    case MenuItem2:
                        MessageBox.Show("Clicked MenuItem2");
                        return;
                    case WM_CLOSE:
                        MessageBox.Show("Can't Close");
                        return;
                    default:
                        break;
                }
            }
            base.WndProc(ref m);
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            IntPtr sysMenuHandle = GetSystemMenu(this.Handle, false);
            InsertMenu(sysMenuHandle, 5, MF_BYPOSITION |MF_SEPARATOR, 0, string.Empty);
            InsertMenu(sysMenuHandle, 6, MF_BYPOSITION , MenuItem1, "MenuItem1");
            InsertMenu(sysMenuHandle, 7, MF_BYPOSITION , MenuItem2, "MenuItem2");
        }
    }

}

Please edit this page!

Do you have...

  • helpful tips?
  • corrections to the existing content?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it!

 
Access PInvoke.net directly from VS:
Terms of Use
Find References
Show Printable Version
Revisions