Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Общий элемент управления панели инструментов Windows содержит встроенные функции настройки, включая диалоговое окно настройки, определяемое системой, которое позволяет пользователю вставлять, удалять или изменять порядок кнопок панели инструментов. Приложение определяет, доступны ли функции настройки и управляют степенью настройки, в которой пользователь может настроить панель инструментов.
Эти функции настройки можно сделать доступными для пользователя, предоставив панели инструментов стиль CCS_ADJUSTABLE . Функции настройки позволяют пользователю перетаскивать кнопку в новую позицию или удалять кнопку, перетаскивая ее с панели инструментов. Кроме того, пользователь может дважды щелкнуть панель инструментов, чтобы отобразить диалоговое окно "Настройка панели инструментов ", что позволяет пользователю добавлять, удалять и изменять параметры панели инструментов. Приложение может отображать диалоговое окно с помощью функции "Настройка члена".
Элемент управления панели инструментов отправляет уведомления в родительское окно на каждом шаге процесса настройки. Если пользователь удерживает клавишу SHIFT вниз и начинает перетаскивать кнопку, панель инструментов автоматически обрабатывает операцию перетаскивания. Панель инструментов отправляет сообщение TBN_QUERYDELETE уведомления в родительское окно, чтобы определить, может ли кнопка быть удалена. Операция перетаскивания заканчивается, если родительское окно возвращает FALSE. В противном случае панель инструментов захватывает входные данные мыши и ожидает, пока пользователь отпустит кнопку мыши.
Когда пользователь освобождает кнопку мыши, элемент управления панели инструментов определяет расположение курсора мыши. Если курсор находится за пределами панели инструментов, кнопка удаляется. Если курсор находится на другой кнопке панели инструментов, панель инструментов отправляет сообщение TBN_QUERYINSERT уведомления в родительское окно, чтобы определить, может ли кнопка быть вставлена слева от указанной кнопки. Кнопка вставляется, если родительское окно возвращает TRUE; в противном случае кнопка не вставляется. Панель инструментов отправляет уведомление TBN_TOOLBARCHANGE, чтобы сообщить о завершении операции перетаскивания.
Если пользователь начинает операцию перетаскивания, не удерживая клавишу SHIFT, элемент управления панели инструментов отправляет сообщение TBN_BEGINDRAG уведомления в окно владельца. Приложение, реализующее собственный код перетаскивания кнопок, может использовать это сообщение в качестве сигнала для начала операции перетаскивания. Панель инструментов отправляет уведомление TBN_ENDDRAG, чтобы сообщить о завершении операции перетаскивания.
Элемент управления панелью инструментов отправляет уведомления, когда пользователь настраивает панель инструментов с помощью диалогового окна "Настройка панели инструментов ". Панель инструментов отправляет уведомление сообщения TBN_BEGINADJUST после двойного щелчка пользователем по панели инструментов, но перед созданием диалогового окна. Затем панель инструментов начинает отправлять ряд сообщений уведомлений TBN_QUERYINSERT , чтобы определить, позволяет ли панель инструментов вставлять кнопки. Когда родительское окно возвращает TRUE, панель инструментов перестает отправлять уведомления о сообщении TBN_QUERYINSERT. Если родительское окно не возвращает значение TRUE для любой кнопки, панель инструментов уничтожает диалоговое окно.
Затем элемент управления панели инструментов определяет, могут ли какие-либо кнопки быть удалены с панели инструментов, отправив одно сообщение TBN_QUERYDELETE уведомления для каждой кнопки на панели инструментов. Родительское окно возвращает ЗНАЧЕНИЕ TRUE , чтобы указать, что кнопка может быть удалена; в противном случае возвращает значение FALSE. Панель инструментов добавляет все кнопки панели инструментов в диалоговое окно, но делает неактивными те, которые не могут быть удалены.
Когда элементу управления панелью инструментов нужна информация о кнопке в диалоговом окне "Настройка панели инструментов", он отправляет сообщение уведомления 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 Элемент управления имеет фокус ввода, и пользователь нажал клавишу Enter.
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, если сведения о кнопке были скопированы в структуру, или FALSE в противном случае.
TBN_QUERYDELETE
Отправляется, когда пользователь настраивает панель инструментов, чтобы определить, может ли кнопка быть удалена из элемента управления панели инструментов. Указатель указывает на структуру TBNOTIFY . Элемент iItem содержит отсчитываемый от нуля индекс кнопки для удаления. Верните значение TRUE , чтобы разрешить удаление кнопки или FALSE , чтобы предотвратить удаление кнопки.
TBN_QUERYINSERT
Отправлено, когда пользователь настраивает элемент управления панели инструментов, чтобы определить, может ли кнопка вставляться слева от указанной кнопки. Указатель указывает на структуру TBNOTIFY . Элемент iItem содержит отсчитываемый от нуля индекс кнопки для вставки. Верните значение TRUE , чтобы разрешить вставку кнопки перед заданной кнопкой или FALSE , чтобы предотвратить вставку кнопки.
TBN_RESET
Отправляется, когда пользователь сбрасывает содержимое диалогового окна "Настройка панели инструментов". Указатель указывает на структуру NMHDR , содержащую сведения о сообщении уведомления. Обработчику не нужно возвращать определенное значение.
TBN_TOOLBARCHANGE
Отправлено после того, как пользователь настроил элемент управления панели инструментов. Указатель указывает на структуру NMHDR , содержащую сведения о сообщении уведомления. Обработчику не нужно возвращать определенное значение.