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


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

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

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

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

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

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

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

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

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

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

Эти сообщения все сообщения WM_NOTIFY, и их можно выполнить в окне " путем добавления записи сопоставления сообщений следующей формы в схеме dbo: окна сообщений.

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
    Идентификатор элемента управления отправя уведомление.

  • code
    Код уведомления. Этот элемент может быть которых значение к типу элемента управления, например 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 определяют адрес и длину, в символах, текущего текста кнопки. Приложение должно заполнение структуры со сведениями о кнопке. Возвращается значение TRUE, если данные кнопки копируются в структуре, и значение ЛОЖЬ в противном случае.

  • TBN_QUERYDELETE отправленных пока пользователь настраивать панели инструментов, чтобы определить, может ли быть кнопка удаляется из элемента управления панели инструментов. Точки указателя на структуру TBNOTIFY. Элемент iItem содержит начинающийся с нуля индекс кнопки, который необходимо удалить. Возвращается значение TRUE, чтобы разрешить кнопку, чтобы удалить или ЛОЖЬ для предотвращения кнопку из должен быть удален.

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

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

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

См. также

Ссылки

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

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

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