Страница 1 из 1

Самостоятельное размещение tooltip в CToolbar

Добавлено: 21 июн 2007, 13:04
MDCI
Можно ли назначить в CToolBar в процессе выполнения тултип (подсказку), загружаемую с файла и т.п. (в программе используется языковый модуль). Слышал что это можно сделать с пом. CToolTipCtrl. Но вроде кнопка CToolbar отдельным классом CWnd не обладает... Или едиственный способ действовать наугад - "вылавливать" местоположение кнопки ? Подскажите...

Re: Самостоятельное размещение tooltip в CToolbar

Добавлено: 21 июн 2007, 14:18
Romeo
ну можно вычислить на какой кнопке курсор мыши. ведь у тулбара есть размеры окна и у енго можно получить размеры кнопок. и в зависимости от того, над какой кнопкой курсор - такую подсказку и выдавать.

Re: Самостоятельное размещение tooltip в CToolbar

Добавлено: 21 июн 2007, 17:00
MDCI
понятно, видимо придется "извращаться"... :)

Re: Самостоятельное размещение tooltip в CToolbar

Добавлено: 21 июн 2007, 17:51
BBB
MDCI,
ведь ToolTip-ы поддерживают возможность динамического запроса иекста подсказки. Если прои добавлении к ToolTip-у Tool-а в качестве строки подсказки указать LPSTR_TEXTCALLBACK.
По-моему, можно порыть в этом направлении. Т.е. идея такова. Вызвать AddTool для каждого элемента Тулбара, указывая lpszText как LPSTR_TEXTCALLBACK и nIDTool - уникальный для каждого элемента Тулбара. Тогда в функции окна, которая будет получать уведомления-запросы "Дай текст подсказки" по этому самому ID можно определить, какой именно элемент "просит" подсказку и выдать в твет соответсвующую строку.

Если коротко, то вот как-то примерно таким образом.

Re: Самостоятельное размещение tooltip в CToolbar

Добавлено: 26 июн 2007, 14:31
MDCI
Решил проблему :)

для каждой кнопки вызывается SetBarTip:
typedef TCHAR* TSTR;

CToolTipCtrl tool;
CToolBar m_wndToolBar;
...
...
void <MainClassDlg>::SetBarTip(int Index, TSTR Text, UINT id)
{
CRect rect;
m_wndToolBar.GetClientRect(&rect);
//int _h=rect.Height();
//rect.left+=Index*_h;
//rect.right=rect.left+_h;
tool.AddTool(&m_wndToolBar, Text, &rect, id);
}

затем (после всех назначений):

tool.Activate(TRUE);
m_wndToolBar.GetToolBarCtrl().SetToolTips(&tool);

Хотя Index можно было бы убрать.

P.S. Мож кому понадобится.