Операционная система Windows 95 для программиста


Обработка извещений от Toolbar


Орган управления 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 содержит номер кнопки, от которой пришло извещение (напомним, что нумерация кнопок начинается с нуля).




- Начало -  - Назад -  - Вперед -



Книжный магазин