A message is a notification from Windows that tells the application something has happened. For example, clicking the mouse, changing the window size, and pressing a key on the keyboard will cause Windows to send a message to the application. The message itself is passed to the application as a record that contains the type of message and other information. For example, for a message that results from a mouse click, the record contains the coordinates of the mouse click. This record type is called Tmsg,
It is declared this way in the Windows unit:
Type
tmsg = Packed record
Hwnd:hwnd; //Window Handle
Message:uint; //Message constant identifier
Wparam:wparam; Specific additional information for 32-bit messages
Lparam:lparam; Specific additional information for 32-bit messages
Time:dword; //time when the message was created
Pt:tpoint; //mouse position at the time of message creation
End
What's in the message?
Do you think the information in a message record is the same as in Greek? If so, take a look at the following explanations:
HWND 32-bit window handle. A window can be any type of screen object because Win32 maintains a handle to most visual objects (Windows, dialogs, buttons, edit boxes, and so on).
The message is used to differentiate the constant values of other messages, which can be predefined constants in Windows cells or custom constants.
WParam is typically a message-related constant value or a handle to a window or control.
LParam is typically a pointer to data in memory. Since W p a r A M, L p a r a m and P o i n T e R are all 3 2 bits,
Therefore, they can be converted to each other.
Wm_null = $0000;
Wm_create = $0001;
Application creates a window
Wm_destroy = $0002;
A window is destroyed
Wm_move = $0003;
Move a window
Wm_size = $0005;
Change the size of a window
Wm_activate = $0006;
A window is activated or inactive;
Wm_setfocus = $0007;
After gaining focus
Wm_killfocus = $0008;
Lose focus
wm_enable = $000a;
Change the Enable state
Wm_setredraw = $000b;
Sets whether the window can be redrawn
Wm_settext = $000c;
The application sends this message to set the text of a window
Wm_gettext = $000d;
The application sends this message to copy the corresponding window's text to the buffer
Wm_gettextlength = $000e;
Gets the length of the text associated with a window (does not contain null characters)
WM_PAINT = $000f;
Ask for a window to repaint itself
Wm_close = $0010;
Send a signal when a window or application is about to close
Wm_queryendsession = $0011;
When the user chooses the End dialog box or the program calls the ExitWindows function itself
Wm_quit = $0012;
Used to end a program run or when a program calls the PostQuitMessage function
Wm_queryopen = $0013;
Sends this message to an icon when the user window restores the previous size position
WM_ERASEBKGND = $0014;
When the window background must be erased (example when the window changes size)
Wm_syscolorchange = $0015;
Send this message to all top-level windows when the system color changes
Wm_endsession = $0016;
When the system process issues a WM_QUERYENDSESSION message, the message is sent to the application,
Tell it whether the conversation is over
Wm_systemerror = $0017;
Wm_showwindow = $0018;
When the hidden or displayed window is sent this message to this window
Wm_activateapp = $001c;
Send this message to the application which window is active and which is inactive;
Wm_fontchange = $001d;
This message is sent to all top-level windows when the system's font repository changes
Wm_timechange = $001e;
Send this message to all top-level windows when the system's time changes
Wm_cancelmode = $001f;
Send this message to cancel an in-progress state (operation)
Wm_setcursor = $0020;
If the mouse causes the cursor to move through a window and the mouse input is not captured, a message is sent to a window
Wm_mouseactivate = $0021;
When the cursor is in a non-activated window and the user is pressing a key on the mouse to send this message to the current window
Wm_childactivate = $0022;
Send this message to the MDI child window when the user clicks the title bar of this window, or when the window is activated, moves, changes the size
Wm_queuesync = $0023;
This message is sent by a computer-based training program, via the Wh_journalpalyback hook program
Separating out user input messages
Wm_getminmaxinfo = $0024;
This message is sent to the window when it is going to change size or position;
Wm_painticon = $0026;
Send to minimized window when its icon is going to be redrawn
Wm_iconerasebkgnd = $0027;
This message is sent to a minimized window only if it's background must be redrawn before drawing the icon
Wm_nextdlgctl = $0028;
Send this message to a dialog box program to change the focus position
Wm_spoolerstatus = $002a;
This message is emitted whenever a print management queue increases or decreases a job
Wm_drawitem = $002b;
Send when the visual appearance of the Button,combobox,listbox,menu changes
This message is given to the owner of these empty pieces
Wm_measureitem = $002c;
When button, combo box, list box, List View control, or menu item is created
Send this message to the owner of the control
Wm_deleteitem = $002d;
When the list box or combo box is destroyed or when certain items are deleted through lb_deletestring, lb_resetcontent, cb_deletestring, or cb_resetcontent messages
Wm_vkeytoitem = $002e;
This message has a lbs_wantkeyboardinput style issued to its owner in response to the WM_KEYDOWN message
Wm_chartoitem = $002f;
This message is sent by a lbs_wantkeyboardinput-style list box to his owner in response to the WM_CHAR message
Wm_setfont = $0030;
The program sends this message when the text is drawn to get the color of the control to be used
Wm_getfont = $0031;
The application sends this message to get the font of the current control drawing text
Wm_sethotkey = $0032;
The application sends this message to have a window associated with a hotkey
Wm_gethotkey = $0033;
The application sends this message to determine if a hot key is associated with a window
Wm_querydragicon = $0037;
This message is sent to the minimized window, and when the window is about to be dragged and the icon is not defined in its class, the application can return an icon or a handle to the cursor, which is displayed when the user drags and puts the icon
Wm_compareitem = $0039;
Send this message to determine the relative position of the newly added item in the ComboBox or ListBox
Wm_getobject = $003d;
wm_compacting = $0041;
Display memory is very low.
wm_windowposchanging = $0046;
Call the SetWindowPos function or other window management function when sending this message to the size and position of the window that will be changed
wm_windowposchanged = $0047;
Call the SetWindowPos function or other window management function when sending this message to the size and position of the window that has been changed
Wm_power = $0048; (for 16-bit Windows)
This message is sent when the system is about to enter a paused state
Wm_copydata = $004a;
This message is sent when an application passes data to another application
Wm_canceljournal = $004b;
When a user cancels the program Log activation state, the message is submitted to the program
Wm_notify = $004e;
Sends this message to its parent window when an event for a control has already occurred or if the control needs to get some information
Wm_inputlangchangerequest = $0050;
When the user chooses an input language, or the hotkey of the input language changes
Wm_inputlangchange = $0051;
Send this message to the affected top-level window when the platform site has been changed
Wm_tcard = $0052;
Send this message to the application when the program has initialized the Windows Help routine
Wm_help = $0053;
This message shows that the user pressed the F1, and if a menu is active, send this message to the menu associated with this window, otherwise
Sends this message to the currently active window if there is currently no focus.
wm_userchanged = $0054;
When the user has logged in or exited to send this message to all windows, when the user log in or exit the system updates the user's specific
Set up information that the system sends this message as soon as the user updates the settings;
Wm_notifyformat = $0055;
Common controls, custom controls, and their parent window use this message to determine whether a control is using an ANSI or Unicode structure
In WM_NOTIFY messages, use this control to communicate with each other between a control and its parent control
Wm_contextmenu = $007b;
This message is sent to this window when the user clicks the right button in a window
wm_stylechanging = $007c;
This message is sent to the window when the call to the SetWindowLong function will change the style of one or more windows
wm_stylechanged = $007d;
When you call the SetWindowLong function one or more window styles, send this message to that window
Wm_displaychange = $007e;
Send this message to all windows when the resolution of the monitor changes
Wm_geticon = $007f;
This message is sent to a window to return a handle to a large icon or small icon connected to a window;
Wm_seticon = $0080;
The program sends this message to have a new large icon or small icon associated with a window;
Wm_nccreate = $0081;
When a window is first created, this message is sent before the wm_create message is sent;
Wm_ncdestroy = $0082;
This message notifies a window that the non-client area is being destroyed
Wm_nccalcsize = $0083;
This message is sent when the customer area of a window must be accounted for
Wm_nchittest = $0084;//Occurs when the mouse is moved, pressed or released
Wm_ncpaint = $0085;
The program sends this message to a window when it (the window) 's frame must be drawn;
Wm_ncactivate = $0086;
This message is sent to a window only if its non-client area needs to be changed to show whether it is active or inactive;
Wm_getdlgcode = $0087;
Send this message to a control that is associated with a dialog box program, widdows the control azimuth key and TAB key to make the input enter this control
By responding to Wm_getdlgcode messages, the application can treat him as a special input control and handle it
Wm_ncmousemove = $00a0;
Send this message when the cursor moves within a window's non-client area to this window//non-client area: the title bar and window of the form
The Border body
Wm_nclbuttondown = $00a1;
Submits this message when the cursor presses the left mouse button at the same time in the non-client area of a window
Wm_nclbuttonup = $00A2;
This message is sent when the user releases the left mouse button while the cursor is in a window in the non-client area 10;
WM_NCLBUTTONDBLCLK = $00A3;
This message is sent when the user double-clicks the left mouse button while the cursor is in a non-client area 10
Wm_ncrbuttondown = $00A4;
This message is sent when the user presses the right mouse button while the cursor is in the non-client area of the window
Wm_ncrbuttonup = $00A5;
This message is sent when the user releases the right mouse button while the cursor is in the non-client area of the window
WM_NCRBUTTONDBLCLK = $00A6;
This message is sent when the user double-clicks the right mouse button while the cursor is in the non-client area 10
Wm_ncmbuttondown = $00a7;
This message is sent when the user presses the middle mouse button while the cursor is in the non-client area of the window
Wm_ncmbuttonup = $00a8;
This message is sent when the user releases the middle mouse button while the cursor is in the non-client area of the window
WM_NCMBUTTONDBLCLK = $00a9;
This message is sent when the user double-clicks the middle mouse button while the cursor is in the non-client area of the window
Wm_keyfirst = $0100;
Wm_keydown = $0100;
Press a key
Wm_keyup = $0101;
Release a key
WM_CHAR = $0102;
Press a key and have issued WM_KEYDOWN, WM_KEYUP message
Wm_deadchar = $0103;
Send this message to the window with focus when translating wm_keyup messages with the TranslateMessage function
Wm_syskeydown = $0104;
Submits this message to the window with focus when the user holds down the ALT key while pressing another key;
Wm_syskeyup = $0105;
Submits this message to the window that has focus when the user releases a key while the ALT key is still pressed
Wm_syschar = $0106;
When the Wm_syskeydown message is translated by the TranslateMessage function, the message is submitted to the window that has the focus
Wm_sysdeadchar = $0107;
Send this message to the window with focus when the Wm_syskeydown message is translated by the TranslateMessage function
Wm_keylast = $0108;
Wm_initdialog = $0110;
Sends this message to a dialog box before it is displayed, typically using this message to initialize the control and perform other tasks
Wm_command = $0111;
When a user selects a menu command item or when a control sends a message to its parent window, a shortcut key is translated
Wm_syscommand = $0112;
The window receives this message when the user chooses a command on the Window menu or when the user chooses to maximize or minimize
Wm_timer = $0113; A timer event has occurred
Wm_hscroll = $0114;
When a window standard horizontal scrollbar produces a scrolling event, this message is sent to that window and also to the control that owns it
Wm_vscroll = $0115;
When a window standard vertical scrollbar produces a scrolling event when the message is sent to that window, it is sent to the control that owns it wm_initmenu = $0116;
This message is sent when a menu is about to be activated, it occurs on an item in the user's menu bar, or a menu key is pressed, which allows the program to change the menu before it is displayed
Wm_initmenupopup = $0117;
This message is sent when a drop-down menu or submenu is about to be activated, allowing the program to change the menu before it is displayed, without changing all
Wm_menuselect = $011f;
Send this message to the owner of the menu (typically a window) when the user selects a menu item
Wm_menuchar = $0120;
When the menu has been activated the user presses a key (unlike the accelerator key) and sends this message to the owner of the menu;
Wm_enteridle = $0121;
Sends this message to its owner when a modal dialog box or menu enters an empty state, and a modal dialog box or menu enters an empty state, which waits in the queue without a message after processing one or several previous messages
Wm_menurbuttonup = $0122;
Wm_menudrag = $0123;
Wm_menugetobject = $0124;
Wm_uninitmenupopup = $0125;
Wm_menucommand = $0126;
Wm_changeuistate = $0127;
Wm_updateuistate = $0128;
Wm_queryuistate = $0129;
Wm_ctlcolormsgbox = $0132;
Send this message to the owner window of the message box before Windows draws the message box, and in response to this message, the owner window can set the text and background color of the message box by using the handle of the given related display device
Wm_ctlcoloredit = $0133;
Sends this message to its parent window when an edit control is about to be drawn; In response to this message, the owner window can set the text and background color of the edit box by using the handle of the given related display device
Wm_ctlcolorlistbox = $0134;
When a ListBox control is going to be drawn before sending this message to its parent window, by responding to this message, the owner window can set the text and background color of the list box by using the handle of the given related display device
WM_CTLCOLORBTN = $0135;
Sends this message to its parent window when a button control is about to be drawn; In response to this message, the owner window can set the text and background color of the buttons by using the handle of the given related display device
Wm_ctlcolordlg = $0136;
When a dialog box control is going to be drawn before sending this message to its parent window, by responding to this message, the owner window can set the text background color of the dialog box by using the handle of the given related display device
Wm_ctlcolorscrollbar= $0137;
Sends this message to its parent window when a scrollbar control is about to be drawn; In response to this message, the owner window can set the background color of the scroll bar by using the handle of the given related display device
Wm_ctlcolorstatic = $0138;
Sends this message to its parent window when a static control is about to be drawn; In response to this message, the owner window can set the text and background color of the static control by using the handle of the given related display device
Wm_mousefirst = $0200;
Wm_mousemove = $0200;
Move mouse
Wm_lbuttondown = $0201;
Press the left mouse button
Wm_lbuttonup = $0202;
Release left mouse button
WM_LBUTTONDBLCLK = $0203;
Double click left mouse button
Wm_rbuttondown = $0204;
Press the right mouse button
Wm_rbuttonup = $0205;
Release the right mouse button
WM_RBUTTONDBLCLK = $0206;
Double-click the right mouse button
Wm_mbuttondown = $0207;
Press the middle mouse button
Wm_mbuttonup = $0208;
Release middle mouse button
WM_MBUTTONDBLCLK = $0209;
Double-click the middle mouse button
WM_MouseWheel = $020a;
Sends this message when the mouse wheel is rotated a control that currently has focus
Wm_mouselast = $020a;
Wm_parentnotify = $0210;
When the MDI child window is created or destroyed, or the user presses the mouse button while the cursor is over the child window, the message is sent to its parent window
Wm_entermenuloop = $0211;
Send this message to notify the application of the main window that has entered the menu loop mode
Wm_exitmenuloop = $0212;
Send this message to notify the application of the main window that has exited the menu loop mode
Wm_nextmenu = $0213;
wm_sizing = 532;
This message is sent to the window when the user is resizing the window, and the message application can monitor the window size and position and modify their
wm_capturechanged = 533;
Send this message to the window when it loses the captured mouse;
wm_moving = 534;
When the user sends this message while the window is being moved, the message application can monitor the window size and position as well as modify them;
Wm_powerbroadcast = 536;
This message is sent to the application to notify it about power management events;
Wm_devicechange = 537;
Send this message to the application or device driver when the device's hardware configuration changes
Wm_ime_startcomposition = $010d;
Wm_ime_endcomposition = $010e;
Wm_ime_composition = $010f;
Wm_ime_keylast = $010f;
Wm_ime_setcontext = $0281;
Wm_ime_notify = $0282;
Wm_ime_control = $0283;
Wm_ime_compositionfull = $0284;
Wm_ime_select = $0285;
Wm_ime_char = $0286;
Wm_ime_request = $0288;
Wm_ime_keydown = $0290;
Wm_ime_keyup = $0291;
Wm_mdicreate = $0220;
The application sends this message to a multi-document client window to create an MDI child window
Wm_mdidestroy = $0221;
The application sends this message to a multi-document client window to close an MDI child window
Wm_mdiactivate = $0222;
The application sends this message to the multi-document Customer window to notify the client window to activate another MDI child window, and when the client window receives this message, it issues a wm_mdiactive message to the MDI child window (not activated) to activate it;
Wm_mdirestore = $0223;
The program sends this message to the MDI client window to restore the child window to its original size from the maximum minimized
Wm_mdinext = $0224;
The program sends this message to the MDI client window to activate the next or previous window
Wm_mdimaximize = $0225;
The program sends this message to the MDI client window to maximize an MDI child window;
Wm_mditile = $0226;
The program sends this message to the MDI client window to re-arrange all MDI child windows in a tiled manner
Wm_mdicascade = $0227;
The program sends this message to the MDI client window to rearrange all MDI child windows in a cascade manner
Wm_mdiiconarrange = $0228;
The program sends this message to the MDI client window to rearrange all the minimized MDI child windows
Wm_mdigetactive = $0229;
The program sends this message to the MDI client window to find the handle to the active child window
Wm_mdisetmenu = $0230;
The program sends this message to the MDI client window using the MDI menu instead of the child window's menu
Wm_entersizemove = $0231;
Wm_exitsizemove = $0232;
Wm_dropfiles = $0233;
Wm_mdirefreshmenu = $0234;
Wm_mousehover = $02A1;
Wm_mouseleave = $02a3;
Wm_cut = $0300;
The program sends this message to an edit box or ComboBox to delete the currently selected text
Wm_copy = $0301;
The program sends this message to an edit box or ComboBox to copy the currently selected text to the Clipboard
Wm_paste = $0302;
The program sends this message to the Editcontrol or ComboBox to get data from the Clipboard
Wm_clear = $0303;
The program sends this message to the Editcontrol or ComboBox to clear the currently selected content;
Wm_undo = $0304;
The program sends this message to the Editcontrol or ComboBox to undo the last action
Wm_renderformat = $0305;
Wm_renderallformats = $0306;
Wm_destroyclipboard = $0307;
Send this message to the owner of the Clipboard when the Enptyclipboard function is called
Wm_drawclipboard = $0308;
This message is sent to the Clipboard in the first window of the watch chain when the contents of the Clipboard change, and it allows the Clipboard to be viewed with a window to
Displays the new contents of the Clipboard;
Wm_paintclipboard = $0309;
When the Clipboard contains data in Cf_ownerdiplay format and the client area of the Clipboard Watch window needs to be redrawn;
Wm_vscrollclipboard = $030a;
Wm_sizeclipboard = $030b;
When the Clipboard contains data in cf_ownerdiplay format and the size of the client area of the Clipboard Watch window has changed, this message is sent to the Clipboard owner through the Clipboard Observation window;
Wm_askcbformatname = $030c;
Send this message through the Clipboard Watch window to the owner of the Clipboard to request a Cf_ownerdisplay-formatted clipboard name
Wm_changecbchain = $030d;
When a window is removed from the Clipboard watch chain, this message is sent to the first window of the Clipboard watch chain;
Wm_hscrollclipboard = $030e;
This message is sent to the owner of the Clipboard through a Clipboard observation window, which occurs when the Clipboard contains data in cfownerdispaly format and has an event on the horizontal scrollbar of the Clipboard view; the owner should scroll the clipboard image and update the scroll bar value;
Wm_querynewpalette = $030f;
This message is sent to the window that will receive the focus, which gives the window a chance to implement his logical palette when it receives the focus
Wm_paletteischanging= $0310;
Send this message to notify all applications when an application is about to implement its logical palette
wm_palettechanged = $0311;
This message changes the system palette by sending this message to all top-level and overlapping windows after implementing its logical palette in a window that has the focus.
Wm_hotkey = $0312;
This message is submitted when the user presses a hotkey registered by the RegisterHotKey function
Wm_print = 791;
The application sends this message only when Windows or another application makes a request to draw part of an application;
Wm_printclient = 792;
Wm_handheldfirst = 856;
Wm_handheldlast = 863;
Wm_penwinfirst = $0380;
Wm_penwinlast = $038f;
Wm_coalesce_first = $0390;
Wm_coalesce_last = $039f;
Wm_dde_first = $03E0;
Wm_dde_initiate = wm_dde_first + 0;
A DDE client submits this message to start a session with the server program in response to the specified program and subject name;
Wm_dde_terminate = Wm_dde_first + 1;
A DDE application (either a client or a server) submits this message to terminate a session;
Wm_dde_advise = Wm_dde_first + 2;
A DDE client submits this message to a DDE service program to request that the server update it whenever the data item changes
Wm_dde_unadvise = Wm_dde_first + 3;
A DDE client notifies a DDE service through this message that the item is not updated by the specified item or a special Clipboard format
Wm_dde_ack = Wm_dde_first + 4;
This message informs a DDE (Dynamic data exchange) program that it has received and is processing Wm_dde_poke, Wm_dde_execute, Wm_dde_data, Wm_dde_advise, wm_dde_unadvise, or Wm_dde_ Initiat message
Wm_dde_data = Wm_dde_first + 5;
A DDE service program submits this message to a DDE client to pass a data item to the customer or to notify the customer of an available data item
Wm_dde_request = Wm_dde_first + 6;
A DDE client submits this message to a DDE service program to request the value of a data item;
Wm_dde_poke = Wm_dde_first + 7;
A DDE client submits this message to a DDE service program, which is used by the client to request that the server receive an unsolicited data item; The server prompts whether it receives the data item by replying to the wm_dde_ack message;
Wm_dde_execute = Wm_dde_first + 8;
A DDE client submits this message to a DDE service program to send a string to the server so that it is processed like a serial command, and the server responds by submitting a wm_dde_ack message;
Wm_dde_last = Wm_dde_first + 8;
Wm_app = $8000;
Wm_user = $0400;
This message can help the application to customize the private message;
/////////////////////////////////////////////////////////////////////
Notification messages (Notification message) refer to a message that a child control within a window has something that needs to be notified to the parent window. Notification messages apply only to standard window controls such as buttons, list boxes, combo boxes, edit boxes, and Windows 95 common controls such as tree view, List view, and so on. For example, clicking or double clicking a control, selecting a portion of the text in the control, and manipulating the scroll bar of the control will produce a notification message.
Press Twist
bn_clicked//user clicked the button
Bn_disable//button is forbidden
bn_doubleclicked//user double-clicked the button
Bn_hilite//user highlights the button
bn_paint//button should be re-painted
bn_unhilite//should be removed
Combo box
The list box for the cbn_closeup//combo box is closed
cbn_dblclk//user double-clicked on a string
The list box of the cbn_dropdown//combo box is pulled out
cbn_editchange//the user has modified the text in the edit box
cbn_editupdate//text in edit box is about to be updated
cbn_errspace//combo box is low on memory
cbn_killfocus//combo box loses input focus
cbn_selchange//selected an item in the combo box
cbn_selendcancel//user's choice should be canceled
cbn_selendok//the choice of the user is legal
cbn_setfocus//combo box to get input focus
edit box
en_change//the text in the edit box has already been updated
en_errspace//edit box is low on memory
en_hscroll//user clicked on the horizontal scroll bar
en_killfocus//edit box is losing input focus
en_maxtext//the inserted content is truncated
en_setfocus//edit box to get input focus
en_update//the text in the edit box will be updated
en_vscroll//user clicked the vertical scroll bar message meaning
list box
lbn_dblclk//user double-clicked on an item
lbn_errspace//list box Not enough memory
lbn_killfocus//list box is losing input focus
lbn_selcancel//Selection Canceled
lbn_selchange//selected another item.
lbn_setfocus//list box to get input focus
Some Windows system messages