Windows has a large number of predefined windows messages which are sent to a window when a given event occurs. You can intercept these messages by subclassing the window and take actions accordingly. This allows you to alter or extend the way that a standard VB window (or control) behaves.

The currently defined set of windows messages is:

VB Code:
  1. Public Enum WindowMessages
  2.     WM_ACTIVATE = &H6
  3.     WM_ACTIVATEAPP = &H1C
  4.     WM_ASKCBFORMATNAME = &H30C
  5.     WM_CANCELJOURNAL = &H4B
  6.     WM_CANCELMODE = &H1F
  7.     WM_CAPTURECHANGED = &H1F
  8.     WM_CAPTURECHANGED_R = &H215
  9.     WM_CHANGECBCHAIN = &H30D
  10.     WM_CHAR = &H102
  11.     WM_CHARTOITEM = &H2F
  12.     WM_CHILDACTIVATE = &H22
  13.     WM_CHOOSEFONT_GETLOGFONT = &H401
  14.     WM_CHOOSEFONT_SETFLAGS = (&H400 + 102)
  15.     WM_CHOOSEFONT_SETLOGFONT = (&H400 + 101)
  16.     WM_CLEAR = &H303
  17.     WM_CLOSE = &H10
  18.     WM_COMMAND = &H111
  19.     WM_COMPACTING = &H41
  20.     WM_COMPAREITEM = &H39
  21.     WM_CONTEXTMENU = &H7B
  22.     WM_CONVERTREQUESTEX = &H108
  23.     WM_COPY = &H301
  24.     WM_COPYDATA = &H4A
  25.     WM_CREATE = &H1
  26.     WM_CTLCOLORBTN = &H135
  27.     WM_CTLCOLORDLG = &H136
  28.     WM_CTLCOLOREDIT = &H133
  29.     WM_CTLCOLORLISTBOX = &H134
  30.     WM_CTLCOLORMSGBOX = &H132
  31.     WM_CTLCOLORSCROLLBAR = &H137
  32.     WM_CTLCOLORSTATIC = &H138
  33.     WM_CUT = &H300
  34.     WM_DDE_ACK = (&H3E0 + 4)
  35.     WM_DDE_ADVISE = (&H3E0 + 2)
  36.     WM_DDE_DATA = (&H3E0 + 5)
  37.     WM_DDE_EXECUTE = (&H3E0 + 8)
  38.     WM_DDE_FIRST = &H3E0
  39.     WM_DDE_INITIATE = &H3E0
  40.     WM_DDE_LAST = (&H3E0 + 8)
  41.     WM_DDE_POKE = (&H3E0 + 7)
  42.     WM_DDE_REQUEST = (&H3E0 + 6)
  43.     WM_DDE_TERMINATE = (&H3E0 + 1)
  44.     WM_DDE_UNADVISE = (&H3E0 + 3)
  45.     WM_DEADCHAR = &H103
  46.     WM_DELETEITEM = &H2D
  47.     WM_DESTROY = &H2
  48.     WM_DESTROYCLIPBOARD = &H307
  49.     WM_DEVICECHANGE = &H219
  50.     WM_DEVMODECHANGE = &H1B
  51.     WM_DRAWCLIPBOARD = &H308
  52.     WM_DRAWITEM = &H2B
  53.     WM_DROPFILES = &H233
  54.     WM_ENABLE = &HA
  55.     WM_ENDSESSION = &H16
  56.     WM_ENTERIDLE = &H121
  57.     WM_ENTERSIZEMOVE = &H231
  58.     WM_ENTERMENULOOP = &H211
  59.     WM_ERASEBKGND = &H14
  60.     WM_EXITMENULOOP = &H212
  61.     WM_EXITSIZEMOVE = &H232
  62.     WM_FONTCHANGE = &H1D
  63.     WM_GETDLGCODE = &H87
  64.     WM_GETFONT = &H31
  65.     WM_GETHOTKEY = &H33
  66.     WM_GETMINMAXINFO = &H24
  67.     WM_GETTEXT = &HD
  68.     WM_GETTEXTLENGTH = &HE
  69.     WM_HELP = &H53
  70.     WM_HOTKEY = &H312
  71.     WM_HSCROLL = &H114
  72.     WM_HSCROLLCLIPBOARD = &H30E
  73.     WM_ICONERASEBKGND = &H27
  74.     WM_IME_CHAR = &H286
  75.     WM_IME_COMPOSITION = &H10F
  76.     WM_IME_COMPOSITIONFULL = &H284
  77.     WM_IME_CONTROL = &H283
  78.     WM_IME_ENDCOMPOSITION = &H10E
  79.     WM_IME_KEYDOWN = &H290
  80.     WM_IME_KEYLAST = &H10F
  81.     WM_IME_KEYUP = &H291
  82.     WM_IME_NOTIFY = &H282
  83.     WM_IME_SELECT = &H285
  84.     WM_IME_SETCONTEXT = &H281
  85.     WM_IME_STARTCOMPOSITION = &H10D
  86.     WM_INITDIALOG = &H110
  87.     WM_INITMENU = &H116
  88.     WM_INITMENUPOPUP = &H117
  89.     WM_INPUTLANGCHANGEREQUEST = &H50
  90.     WM_INPUTLANGCHANGE = &H51
  91.     WM_KEYDOWN = &H100
  92.     WM_KEYUP = &H101
  93.     WM_KILLFOCUS = &H8
  94.     WM_LBUTTONDBLCLK = &H203
  95.     WM_LBUTTONDOWN = &H201
  96.     WM_LBUTTONUP = &H202
  97.     WM_MBUTTONDBLCLK = &H209
  98.     WM_MBUTTONDOWN = &H207
  99.     WM_MBUTTONUP = &H208
  100.     WM_MDIACTIVATE = &H222
  101.     WM_MDICASCADE = &H227
  102.     WM_MDICREATE = &H220
  103.     WM_MDIDESTROY = &H221
  104.     WM_MDIGETACTIVE = &H229
  105.     WM_MDIICONARRANGE = &H228
  106.     WM_MDIMAXIMIZE = &H225
  107.     WM_MDINEXT = &H224
  108.     WM_MDIREFRESHMENU = &H234
  109.     WM_MDIRESTORE = &H223
  110.     WM_MDISETMENU = &H230
  111.     WM_MDITILE = &H226
  112.     WM_MEASUREITEM = &H2C
  113.     WM_MENUCHAR = &H120
  114.     WM_MENUSELECT = &H11F
  115.     WM_MENURBUTTONUP = &H122
  116.     WM_MENUDRAG = &H123
  117.     WM_MENUGETOBJECT = &H124
  118.     WM_MENUCOMMAND = &H126
  119.     WM_MOUSEACTIVATE = &H21
  120.     WM_MOUSEHOVER = &H2A1
  121.     WM_MOUSELEAVE = &H2A3
  122.     WM_MOUSEMOVE = &H200
  123.     WM_MOUSEWHEEL = &H20A
  124.     WM_MOVE = &H3
  125.     WM_MOVING = &H216
  126.     WM_NCACTIVATE = &H86
  127.     WM_NCCALCSIZE = &H83
  128.     WM_NCCREATE = &H81
  129.     WM_NCDESTROY = &H82
  130.     WM_NCHITTEST = &H84
  131.     WM_NCLBUTTONDBLCLK = &HA3
  132.     WM_NCLBUTTONDOWN = &HA1
  133.     WM_NCLBUTTONUP = &HA2
  134.     WM_NCMBUTTONDBLCLK = &HA9
  135.     WM_NCMBUTTONDOWN = &HA7
  136.     WM_NCMBUTTONUP = &HA8
  137.     WM_NCMOUSEMOVE = &HA0
  138.     WM_NCPAINT = &H85
  139.     WM_NCRBUTTONDBLCLK = &HA6
  140.     WM_NCRBUTTONDOWN = &HA4
  141.     WM_NCRBUTTONUP = &HA5
  142.     WM_NEXTDLGCTL = &H28
  143.     WM_NEXTMENU = &H213
  144.     WM_NULL = &H0
  145.     WM_PAINT = &HF
  146.     WM_PAINTCLIPBOARD = &H309
  147.     WM_PAINTICON = &H26
  148.     WM_PALETTECHANGED = &H311
  149.     WM_PALETTEISCHANGING = &H310
  150.     WM_PARENTNOTIFY = &H210
  151.     WM_PASTE = &H302
  152.     WM_PENWINFIRST = &H380
  153.     WM_PENWINLAST = &H38F
  154.     WM_POWER = &H48
  155.     WM_POWERBROADCAST = &H218
  156.     WM_PRINT = &H317
  157.     WM_PRINTCLIENT = &H318
  158.     WM_PSD_ENVSTAMPRECT = (&H400 + 5)
  159.     WM_PSD_FULLPAGERECT = (&H400 + 1)
  160.     WM_PSD_GREEKTEXTRECT = (&H400 + 4)
  161.     WM_PSD_MARGINRECT = (&H400 + 3)
  162.     WM_PSD_MINMARGINRECT = (&H400 + 2)
  163.     WM_PSD_PAGESETUPDLG = (&H400)
  164.     WM_PSD_YAFULLPAGERECT = (&H400 + 6)
  165.     WM_QUERYDRAGICON = &H37
  166.     WM_QUERYENDSESSION = &H11
  167.     WM_QUERYNEWPALETTE = &H30F
  168.     WM_QUERYOPEN = &H13
  169.     WM_QUEUESYNC = &H23
  170.     WM_QUIT = &H12
  171.     WM_RBUTTONDBLCLK = &H206
  172.     WM_RBUTTONDOWN = &H204
  173.     WM_RBUTTONUP = &H205
  174.     WM_RENDERALLFORMATS = &H306
  175.     WM_RENDERFORMAT = &H305
  176.     WM_SETCURSOR = &H20
  177.     WM_SETFOCUS = &H7
  178.     WM_SETFONT = &H30
  179.     WM_SETHOTKEY = &H32
  180.     WM_SETREDRAW = &HB
  181.     WM_SETTEXT = &HC
  182.     WM_SETTINGCHANGE = &H1A
  183.     WM_SHOWWINDOW = &H18
  184.     WM_SIZE = &H5
  185.     WM_SIZING = &H214
  186.     WM_SIZECLIPBOARD = &H30B
  187.     WM_SPOOLERSTATUS = &H2A
  188.     WM_SYSCHAR = &H106
  189.     WM_SYSCOLORCHANGE = &H15
  190.     WM_SYSCOMMAND = &H112
  191.     WM_SYSDEADCHAR = &H107
  192.     WM_SYSKEYDOWN = &H104
  193.     WM_SYSKEYUP = &H105
  194.     WM_TIMECHANGE = &H1E
  195.     WM_TIMER = &H113
  196.     WM_UNDO = &H304
  197.     WM_USER = &H400
  198.     WM_VKEYTOITEM = &H2E
  199.     WM_VSCROLL = &H115
  200.     WM_VSCROLLCLIPBOARD = &H30A
  201.     WM_WINDOWPOSCHANGED = &H47
  202.     WM_WINDOWPOSCHANGING = &H46
  203.     WM_WININICHANGE = &H1A
  204.     WM_APPCOMMAND = &H319
  205. End Enum

As well as the message there are two parameters called wParam and lParam which give you additional information about the event that occured.