Загальні керування панелі інструментів Windows має вбудований налаштування функцій, включаючи діалогове вікно системи, визначена настройка, яка дозволяє користувачеві вставити, видалити або змінити розташування кнопок на панелі інструментів. Програма визначає, чи налаштування функції доступні і контролює ступінь, до якої користувач може налаштувати панель інструментів.
Ви можете зробити ці налаштування функції доступні користувачеві, даючи панелі інструментів CCS_ADJUSTABLE стилю. Налаштування функції дозволяють користувачу, перетягніть кнопку до нового розташування або видалити кнопки, перетягнувши її з панелі інструментів. Крім того, користувач може двічі клацніть панель інструментів, щоб відобразити діалогове вікно Налаштування панелі інструментів, що дозволяє користувачеві можна додавати, видаляти та змінювати порядок кнопок на панелі інструментів. Застосунок може відображати діалогове вікно за допомогою Настроювання член функції.
Панель керування надсилає повідомлення про батьків вікна на кожному кроці в процесі налаштування. Якщо користувач має клавішу SHIFT, починається, перетягуючи кнопку панелі інструментів автоматично обробляє операції перетягування. Панель інструментів надсилає повідомлення про TBN_QUERYDELETE вікна батьків, щоб визначити, чи кнопці може бути видалено. Перетягніть операції закінчується, якщо вікно батьківського повертає брехня. В іншому випадку, панель інструментів відображає миші вводу і чекає для користувача, щоб відпустити кнопку миші.
Коли користувач відпускає кнопку миші, панелі інструментів керування визначає розташування вказівника миші. Якщо курсор за межі панелі інструментів, кнопки Видалити. Якщо курсор на іншу кнопку панелі інструментів, панель інструментів надсилає повідомлення про TBN_QUERYINSERT вікна батьків, щоб визначити, якщо кнопка може бути вставлений ліворуч від кнопки даного. Кнопка вставляється, якщо вікно батьківського повертає TRUE; в іншому випадку, це не так. Панель інструментів надсилає повідомлення про TBN_TOOLBARCHANGE для позначення завершення операції перетягування.
Якщо користувач починає операції перетягування, не утримуючи клавішу SHIFT, керування панелі інструментів надсилає повідомлення про TBN_BEGINDRAG вікна власника. Застосунок, що реалізує свій власний код кнопки перетягування можна використовувати це повідомлення як сигнал до початку операції перетягування. Панель інструментів надсилає повідомлення про TBN_ENDDRAG для позначення завершення операції перетягування.
Панель керування надсилає повідомлення про, коли користувач налаштовує панель інструментів за допомогою "у діалоговому вікні" Налаштувати панель інструментів ". Панель інструментів надсилає повідомлення про TBN_BEGINADJUST після того, як користувач double-clicks панелі інструментів, але до діалоговому вікні створюється поле. Наступне, панелі інструментів починається надсилання серію повідомлення про TBN_QUERYINSERT , щоб визначити, чи панель інструментів дозволяє кнопки Вставити. Коли батько вікно повертає TRUEпанелі інструментів перестає працювати відправлення повідомлення про TBN_QUERYINSERT . Якщо батьківського вікно не повертає ВІРНО для будь-якої кнопки, панелі інструментів руйнує діалогового вікна.
Далі, панель керування визначає, якщо будь-які кнопки може бути видалено з панелі інструментів за допомогою одного повідомлення про TBN_QUERYDELETE для кожної кнопки на панелі інструментів. Батько вікна повертається правда, щоб вказати, що кнопка може бути видалено; інакше, повертає брехня. Панелі інструментів додає всі кнопки панелі інструментів до діалогового вікна, але ті, які не можуть бути видалені grays.
Кожного разу, коли панель керування потрібна інформація про кнопки у діалоговому вікні "Налаштувати панель інструментів", він посилає повідомлення про TBN_GETBUTTONINFO , визначення індексу кнопки, для яких вона потрібна інформація та адреса TBNOTIFY структури. Батько вікна повинні заповнити структури з відповідної інформації.
"У діалоговому вікні" Налаштувати панель інструментів "містить кнопку довідки та кнопку скидання. Коли користувач вибирає Довідка ", панель керування надсилає повідомлення про TBN_CUSTHELP . Батько вікна повинні реагувати на відображення довідки. Діалогове вікно надсилання повідомлення сповіщень TBN_RESET , коли користувач вибирає кнопку скидання. Це повідомлення сигнали, що панель інструментів збирається повторно ініціалізувати діалогове вікно.
Ці повідомлення є всі WM_NOTIFY повідомлення, і вони можуть бути оброблені у вікні власник шляхом додавання повідомлення карта записи такі форма власник вікно повідомлення карту:
ON_NOTIFY (wNotifyCode,idControl,,memberFxn)
wNotifyCode
Сповіщення про повідомлення ідентифікатор кодів, таких як TBN_BEGINADJUST.
idControl
Ідентифікатор елемента керування відправки повідомлень.
memberFxn
Член функції при отримання цього сповіщення про.
Член функція буде оголошено з наступних прототипу:
afx_msg недійсними memberFxn( NMHDR * pNotifyStruct, LRESULT * результат );
Якщо сповіщення про повідомлення обробника повертає значення, він повинен покласти його в 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 iItem; / / Індекс кнопку пов'язані з повідомленням
TBBUTTON tbButton; / / Інформація про кнопки, пов'язаних з повідомлення
Int cchText; nbsp; / / кількість символів у тексті кнопки
LPSTR lpszText; / / адреса кнопку тексту
} TBNOTIFY, НАБАГАТО * LPTBNOTIFY
hdr
Відомості про спільні для всіх WM_NOTIFY повідомлень.
iItem
Індекс кнопка, пов'язана з повідомленням.
tbButton
TBBUTTON структура, що містить інформацію про кнопку панелі інструментів, пов'язаних з повідомленням.
cchText
Кількість символів у тексті кнопки.
lpszText
Вказівник на кнопку текст.
Сповіщення, панель інструментів надсилає є наступні: