CToolBarCtrl: Обработка настройки уведомлений

Общий элемент управления панели инструментов Windows имеет встроенные настройки функций, включая системные настройки диалогового окна, которые позволяют пользователю для вставки, удаления или переупорядочивать кнопки панели инструментов. Приложение определяет ли функции настройки доступны и контролирует степень, в которой пользователь может настроить панель инструментов.

Эти функции настройки можно сделать доступными для пользователя, давая панели инструментов стиль CCS_ADJUSTABLE . Функции настройки позволяют пользователю перетащите кнопку на новое место или удалить кнопку, перетащив ее с панели инструментов. Кроме того пользователь может дважды щелкнуть панели инструментов для отображения диалогового окна Настройка панели инструментов, который позволяет пользователю добавлять, удалять и переупорядочивать кнопки панели инструментов. Приложение может отображать диалогового окна с помощью функции-члена Настройка.

Элемент управления toolbar отправляет сообщения уведомления родительскому окну на каждом шаге в процессе настройки. Если пользователь удерживает клавишу SHIFT нажатой и начинает перетаскивать кнопки, панели инструментов автоматически обрабатывает операцию перетаскивания. Панели инструментов отправляет сообщение уведомления TBN_QUERYDELETE родительского окна для определения, может быть удалена кнопка. Операция перетаскивания заканчивается, если родительское окно возвращает значение FALSE. В противном случае панели инструментов захватывает ввод от мыши и ожидает для пользователя, чтобы отпустить кнопку мыши.

Когда пользователь отпускает кнопку мыши, элемент управления toolbar определяет местоположение курсора мыши. Если курсор находится за пределами панели инструментов, кнопки удаляется. Если курсор находится на другой кнопки панели инструментов, панели инструментов отправляет сообщение уведомления TBN_QUERYINSERT родительского окна, чтобы определить, если кнопка может вставить слева от данной кнопкой. Кнопка вставляется, если родительское окно возвращает TRUE; в противном случае это не так. Панели инструментов отправляет сообщение уведомления TBN_TOOLBARCHANGE сигнал об окончании операции перетаскивания.

Если пользователь начинает операцию перетаскивания не удерживая нажатой клавишу SHIFT, элемент управления toolbar отправляет сообщение уведомления TBN_BEGINDRAG окно-владелец. Приложение, которое реализует свой собственный код, перетаскивая кнопку можно использовать это сообщение как сигнал, чтобы начать операцию перетаскивания. Панели инструментов отправляет сообщение уведомления TBN_ENDDRAG сигнал об окончании операции перетаскивания.

Элемент управления toolbar посылает сообщения уведомления, когда пользователь настраивает панель инструментов, с помощью диалогового окна Настройка панели инструментов. Панели инструментов отправляет сообщение уведомления TBN_BEGINADJUST после того, как пользователь дважды щелкает кнопкой панели инструментов, но до диалогового окна поле будет создан. Далее панели инструментов начинает отправлять серию сообщений уведомления TBN_QUERYINSERT для определения, разрешает ли панель инструментов кнопки для вставки. Когда родительское окно возвращает значение TRUE, панели инструментов прекращает отправку сообщений уведомления TBN_QUERYINSERT . Если родительское окно не возвращает значение TRUE для любой кнопки, панели инструментов разрушает диалогового окна.

Элемент управления toolbar определяет, если какие-либо кнопки могут быть удалены из панели инструментов путем отправки одного TBN_QUERYDELETE уведомления для каждой кнопки в панели инструментов. Родительское окно возвращает TRUE для указания, что кнопки могут быть удалены; в противном случае возвращает значение FALSE. Панели инструментов добавляет все кнопки панели инструментов диалогового окна, но grays, которые не могут быть удалены.

Всякий раз, когда элемент управления toolbar необходимы сведения о кнопке в диалоговом окне Настройка панели инструментов, он посылает сообщение уведомления TBN_GETBUTTONINFO , указав индекс кнопки, для которой требуется информация и адрес структуры TBNOTIFY . В родительском окне нужно заполнить структуру с соответствующей информацией.

Диалоговое окно Настройка панели инструментов включает в себя кнопку Справка и кнопки сброса. Когда пользователь выбирает кнопку Справка, элемент управления toolbar посылает сообщение уведомления TBN_CUSTHELP . Родительское окно следует отвечать Отображение справочных сведений. Диалоговое окно "" посылает сообщение уведомления TBN_RESET когда пользователь выбирает кнопку Reset. Это сообщение указывает, что панель инструментов собирается выполнить повторную инициализацию диалогового окна.

Эти сообщения являются все WM_NOTIFY , и они могут быть обработаны в вашем окне Владелец Добавление записей сообщений карты следующей формы в окно-владелец схемы сообщений:

ON_NOTIFY ( wNotifyCode, idControl, memberFxn )

wNotifyCode

Кода идентификатор сообщения уведомления, такие как TBN_BEGINADJUST.

idControl

Идентификатор элемента управления отправкой уведомления.

memberFxn

Функция-член, вызываемый после получения этого уведомления.

Функция-член будет объявлен в следующий прототип:

afx_msgvoidmemberFxn()NMHDR *LRESULT* pNotifyStruct,результат);

Если обработчик сообщений уведомления возвращает значение, он должен положить его в LRESULT указывает результат.

Для каждого сообщения pNotifyStruct указывает на структуру NMHDR или TBNOTIFY структуру. Ниже описываются эти структуры:

NMHDR структура содержит следующие члены:

typedef struct tag&NMHDR {}
HWND hwndFrom; nbsp; / / Ручка управления отправки сообщения
UINT idFrom; / / идентификатор элемента управления отправки сообщения
UINT код;  / / код уведомления; Смотрите ниже
} NMHDR

hwndFrom

Дескриптор окна элемента управления, который отправляет уведомления. Чтобы преобразовать этот дескриптор в указатель CWnd , используйте CWnd::FromHandle.

idFrom

Идентификатор элемента управления, направление уведомления.

код

Код уведомления. Этот член может быть специфическими для типа элемента управления, такие как TBN_BEGINADJUST или TTN_NEEDTEXT, или это может быть один из общих ценностей уведомления, перечисленных ниже:

TBNOTIFY структура содержит следующие члены:

typedef struct {}
&NMHDR hdr; / / информация, общая для всех WM_NOTIFY сообщений
int товар; / / Индекс button, связанные с уведомлением
TBBUTTON tbButton; / / информация о кнопке связанные с уведомлением
int cchText; nbsp;  / / число символов в текст кнопки
LPSTR lpszText; / / адрес из текста кнопки
} TBNOTIFY, ДАЛЕКО * LPTBNOTIFY

hdr

Информация, общая для всех WM_NOTIFY сообщений.

товар

Индекс button, связанные с уведомлением.

tbButton

Структура TBBUTTON , содержащая сведения о кнопке панели инструментов, связанные с уведомлением.

cchText

Количество символов в текст кнопки.

lpszText

Указатель на текст кнопки.

Панели инструментов отправляет уведомления являются следующие:

Index