Самостоятельное размещение tooltip в CToolbar
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Можно ли назначить в CToolBar в процессе выполнения тултип (подсказку), загружаемую с файла и т.п. (в программе используется языковый модуль). Слышал что это можно сделать с пом. CToolTipCtrl. Но вроде кнопка CToolbar отдельным классом CWnd не обладает... Или едиственный способ действовать наугад - "вылавливать" местоположение кнопки ? Подскажите...
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
ну можно вычислить на какой кнопке курсор мыши. ведь у тулбара есть размеры окна и у енго можно получить размеры кнопок. и в зависимости от того, над какой кнопкой курсор - такую подсказку и выдавать.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
понятно, видимо придется "извращаться"...
MDCI,
ведь ToolTip-ы поддерживают возможность динамического запроса иекста подсказки. Если прои добавлении к ToolTip-у Tool-а в качестве строки подсказки указать LPSTR_TEXTCALLBACK.
По-моему, можно порыть в этом направлении. Т.е. идея такова. Вызвать AddTool для каждого элемента Тулбара, указывая lpszText как LPSTR_TEXTCALLBACK и nIDTool - уникальный для каждого элемента Тулбара. Тогда в функции окна, которая будет получать уведомления-запросы "Дай текст подсказки" по этому самому ID можно определить, какой именно элемент "просит" подсказку и выдать в твет соответсвующую строку.
Если коротко, то вот как-то примерно таким образом.
ведь ToolTip-ы поддерживают возможность динамического запроса иекста подсказки. Если прои добавлении к ToolTip-у Tool-а в качестве строки подсказки указать LPSTR_TEXTCALLBACK.
По-моему, можно порыть в этом направлении. Т.е. идея такова. Вызвать AddTool для каждого элемента Тулбара, указывая lpszText как LPSTR_TEXTCALLBACK и nIDTool - уникальный для каждого элемента Тулбара. Тогда в функции окна, которая будет получать уведомления-запросы "Дай текст подсказки" по этому самому ID можно определить, какой именно элемент "просит" подсказку и выдать в твет соответсвующую строку.
Если коротко, то вот как-то примерно таким образом.
Решил проблему
для каждой кнопки вызывается 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. Мож кому понадобится.
для каждой кнопки вызывается 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. Мож кому понадобится.