Поделиться через


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

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

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

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

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

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

Элемент управления "Панель инструментов" отправляет сообщение уведомления, когда пользователь настраивает панель инструментов с помощью диалогового окна настройку панели инструментов.Панель инструментов " отправляет сообщение уведомления TBN_BEGINADJUST после того, как пользователь дважды щелкает панель инструментов, но до того, как диалоговое окно создания.Теперь панель инструментов начинает отправлять ряд сообщений уведомления TBN_QUERYINSERT, чтобы определить, разрешены ли панель инструментов кнопки, который необходимо вставить.Если родительское окно возвращает Истина, панель инструментов останавливает отправлять сообщения уведомления TBN_QUERYINSERT.Если родительское окно не возвращает Истина для всех кнопок панели инструментов уничтожает диалоговое окно.

Теперь элемент управления " Панель инструментов определяет, если имеются кнопки могут быть удалены из панели инструментов, отправляя одно сообщение уведомления TBN_QUERYDELETE для каждой кнопки панели инструментов.Родительское окно возвращает Истина, чтобы указать, что кнопка может быть удалена; в противном случае оно возвращает Ложь.Панель инструментов добавляет все кнопки панели инструментов к компоненту, но серые цвета те, которые не могут быть удалены.

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

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

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

ON_NOTIFY( wNotifyCode, idControl, memberFxn )

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

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

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

Ваш функция-член будет объявлен следующим прототипом:

afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );

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

Для каждого сообщения, точек или pNotifyStruct к структуре NMHDR или структуре TBNOTIFY.Эти структуры описанных ниже:

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

typedef struct tagNMHDR {

HWND hwndFrom; // handle of control sending message

UINT idFrom;// identifier of control sending message

UINT code; // notification code; see below

} NMHDR;

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

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

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

    • NM_CLICK пользователь щелкнуло левую кнопку мыши в пределах элемента управления.

    • NM_DBLCLK пользователь дважды щелкнуло левую кнопку мыши в пределах элемента управления.

    • NM_KILLFOCUS элемент управления потеряло фокус ввода.

    • NM_OUTOFMEMORY элемент управления не удалось выполнить операцию, поскольку недостаточно памяти.

    • NM_RCLICK пользователь щелкнуло правой кнопкой мыши внутри элемента управления.

    • NM_RDBLCLK пользователь дважды щелкнуло правой кнопкой мыши внутри элемента управления.

    • NM_RETURN элемент управления имеет фокус ввода, а пользователь отжимал клавиши ВВОД.

    • NM_SETFOCUS элемент управления получил фокус ввода.

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

typedef struct {

NMHDR hdr; // information common to all WM_NOTIFY messages

int iItem; // index of button associated with notification

TBBUTTON tbButton; // info about button associated withnotification

int cchText; // count of characters in button text

LPSTR lpszText;// address of button text

} TBNOTIFY, FAR* LPTBNOTIFY;

Заметки

  • hdr
    Общие сведения для всех сообщений WM_NOTIFY.

  • iItem
    Индекс кнопки, связанный с уведомлением.

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

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

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

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

  • TBN_BEGINADJUST, отправляемое, когда пользователь начнется настраивать элемент управления " Панель инструментов.NMHDR Точки указателя на структуру, содержащую сведения об уведомлении.Обработчик не нужно возвращать любое конкретное значение.

  • TBN_BEGINDRAG, отправляемое, когда пользователь начнется перетащить кнопки в элементе управления " Панель инструментов.Точки указателя на структуру TBNOTIFY.Элемент iItem содержит индекс перетаскиваемый кнопки.Обработчик не нужно возвращать любое конкретное значение.

  • TBN_CUSTHELP, отправляемое, когда пользователь выбирает кнопку справка в диалоговом окне настройки панели инструментов.Без возвращаемого значения.NMHDR Точки указателя на структуру, содержащую сведения о сообщении уведомления.Обработчик не нужно возвращать любое конкретное значение.

  • TBN_ENDADJUST, отправляемое, когда пользователь останавливает настраивать элемент управления " Панель инструментов.NMHDR Точки указателя на структуру, содержащую сведения о сообщении уведомления.Обработчик не нужно возвращать любое конкретное значение.

  • TBN_ENDDRAG, отправляемое, когда пользователь прекращает перетаскивание кнопки в элементе управления " Панель инструментов.Точки указателя на структуру TBNOTIFY.Элемент iItem содержит индекс перетаскиваемый кнопки.Обработчик не нужно возвращать любое конкретное значение.

  • TBN_GETBUTTONINFO, отправляемое, когда пользователь настраивает элемент управления " Панель инструментов.Панель инструментов используется это сообщение уведомления для извлечения сведений не требуется диалоговым окном панели инструментов настройки.Точки указателя на структуру TBNOTIFY.Элемент iItem указывает отсчитываемый от нуля индекс кнопки.Члены pszText и cchText задают адрес и длину (в символах), текущий текст кнопки.Приложение должно заполнять структуру с сведения о кнопке.Возвращает Истина кнопки, если данные были скопированы в структуре или Ложь в противном случае.

  • TBN_QUERYDELETE, отправляемое пока пользователь настраивает панель инструментов, чтобы определить, может ли кнопка быть удалена из элемента управления " Панель инструментов.Точки указателя на структуру TBNOTIFY.Элемент iItem содержит индекс кнопки для удаления.Возвращает Истина чтобы включить кнопку для удаления или Ложь для предотвращения кнопку из удален.

  • TBN_QUERYINSERT, отправляемое пока пользователь настраивает элемент управления " Панель инструментов, чтобы определить, может ли кнопка быть вставлена слева от данной кнопки.Точки указателя на структуру TBNOTIFY.Элемент iItem содержит индекс кнопки, который необходимо вставить.Возвращает Истина чтобы включить кнопку для вставки перед заданным кнопкой или Ложь для предотвращения кнопку из быть вставлены.

  • TBN_RESET, отправляемое, когда пользователь сбросит содержимое панели инструментов диалогового окна настройки.NMHDR Точки указателя на структуру, содержащую сведения о сообщении уведомления.Обработчик не нужно возвращать любое конкретное значение.

  • TBN_TOOLBARCHANGE, отправленное после того, как пользователь настраивает элемент управления " Панель инструментов.NMHDR Точки указателя на структуру, содержащую сведения о сообщении уведомления.Обработчик не нужно возвращать любое конкретное значение.

См. также

Ссылки

Использование CToolBarCtrl

Основные понятия

Элементы управления (MFC)