Notification Messages from Buttons
When the user selects a button, its state changes, and the button sends notification messages to its parent window. For example, a push button control sends the BN_CLICKED notification message whenever the user chooses the button. In all cases, the low-order word of the wParam parameter contains the control identifier, the high-order word of wParam contains the notification code, and the lParam parameter contains the control window handle.
Portability Issue The placement of notification message has moved from the lParam parameter to the wParam parameter. Windows 3.x - based applications that process notification messages must be modified in this respect when they are ported to Win32-based applications.
Both the message and the parent window's response depend on the type, style, and current state of the button. Following are the button notification messages an application should monitor and process.
Message | Description |
BN_CLICKED | The user clicked a button. |
BN_DBLCLK | The user double-clicked a button. |
BN_DISABLE | A button is disabled. |
BN_PUSHED | The user pushed a button. |
BN_KILLFOCUS | The button lost the keyboard focus. |
BN_PAINT | The button should be painted. |
BN_SETFOCUS | The button gained the keyboard focus. |
BN_UNPUSHED | The button is no longer pushed. |
A button sends the BN_DISABLE, BN_PUSHED, BN_KILLFOCUS, BN_PAINT, BN_SETFOCUS, and BN_UNPUSHED notification messages only if it has the BS_NOTIFY style. It sends the BN_CLICKED and BN_DBLCLK notification messages regardless of the BS_NOTIFY style.
For automatic buttons, the operating system performs pushing, unpushing, and painting. In this case, the application typically processes only the BN_CLICKED and BN_DBLCLK notification messages. For buttons that are not automatic, the application typically responds to the notification message by sending a message to change the state of the button. For information about sending messages to buttons, Messages to Buttons.
When the user selects an owner-drawn button, the button sends its parent window a WM_DRAWITEM message containing the identifier of the control to be drawn and information about its dimensions and state. For more information about this message, see Using Owner-Drawn Buttons.