Операционная система Windows 95 для программиста



         

Обработка извещений от Toolbar - часть 4


case TTN_NEEDTEXT: lpToolTipText = (LPTOOLTIPTEXT)pnmhdr; LoadString(hInst, lpToolTipText->hdr.idFrom, szBuf, sizeof(szBuf)); lpToolTipText->lpszText = szBuf; break;

Вот и все, что нужно для того чтобы предоставить пользователю возможность определять назначение кнопок Toolbar с помощью органа управления Tool Tip.

TBN_GETBUTTONINFO

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

Следующий фрагмент кода возвращает функции окна Toolbar сведения о кнопке, номер которой передается вместе с извещением:

case TBN_GETBUTTONINFO: lptbn = (LPTBNOTIFY)pnmhdr; nItem = lptbn->iItem; lptbn->tbButton.iBitmap = [nItem].iBitmap; lptbn->tbButton.idCommand = tbButtons[nItem].idCommand; lptbn->tbButton.fsState = tbButtons[nItem].fsState; lptbn->tbButton.fsStyle = tbButtons[nItem].fsStyle; lptbn->tbButton.dwData = tbButtons[nItem].dwData; lptbn->tbButton.iString = tbButtons[nItem].iString; return((nItem < sizeof(tbButtons)/sizeof(tbButtons[0]))? TRUE : FALSE); break;

Номер кнопки берется из поля iItem описанной ранее структуры TBNOTIFY, а информация о кнопке - из структуры tbButtons типа TBBUTTON, которая была подготовлена еще до создания Toolbar .

Обратите внимание на то, что обработчик извещения TBN_GETBUTTONINFO возвращает TRUE, если номер кнопки не вышел за пределы возможных значений индекса массива структур tbButtons. В противном случае возвращается значение FALSE.

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




Содержание  Назад  Вперед