Орган управления Toolbar посылает в родительское окно сообщения WM_COMMAND и WM_NOTIFY. О том, как обрабатывать первое из них, вы знаете из предыдущих томов "Библиотеки системного программиста", посвященных программированию для Microsoft Windows. Остановимся на обработке нового для вас сообщения WM_NOTIFY .
Через параметр wParam этого сообщения передается идентификатор органа управления. Если извещение пришло от Toolbar , то это должен быть идентификатор Toolbar.
Параметр lParam содержит указатель на структуру типа NMHDR или на структуру большего размера, содержащую в своем начале структуру NMHDR :
typedef struct tagNMHDR { HWND hwndFrom; UINT idFrom; UINT code; } NMHDR;
В этой структуре поле hwndFrom содержит идентификатор окна, приславшего сообщение, поле idFrom - идентификатор органа управления, приславшего сообщение, а поле code - код извещения.
Органы управления могут присылать следующие коды извещения:
Код извещения | Описание |
NM_CLICK | Пользователь сделал щелчок левой клавишей мыши внутри органа управления |
NM_DBLCLICK | Пользователь сделал двойной щелчок левой клавишей мыши внутри органа управления |
NM_RCLICK | Пользователь сделал щелчок правой клавишей мыши внутри органа управления |
NM_RDBLCLICK | Пользователь сделал двойной щелчок правой клавишей мыши внутри органа управления |
NM_RETURN | Когда орган управления имел фокус ввода, пользователь нажал клавишу <Enter> |
NM_KILLFOCUS | Орган управления потерял фокус ввода |
NM_SETFOCUS | Орган управления получил фокус ввода |
Перечисленные выше коды извещений используются всеми стандартными органами управления. Что же касается органа управления Toolbar , до для него имеются некоторые добавления.
Во-первых, параметр lParam сообщения WM_NOTIFY содержит указатель на структуру TBNOTIFY (содержащую в самом начале только что описанную структуру NMHDR ):
typedef struct { NMHDR hdr; int iItem; TBBUTTON tbButton; int cchText; LPTSTR pszText; } TBNOTIFY, FAR * LPTBNOTIFY;
В этой структуре поле iItem содержит номер кнопки, от которой пришло извещение (напомним, что нумерация кнопок начинается с нуля).