Аннотация:
Ограничимся простейшим (но не самым бесполезным!) набором функций, которые мы хотим получить от подсказок. Чаще всего необходимо добавить появление подсказки для определенных областей окна (будь то контролы или отведенные для этой цели прямоугольники), кроме того необходимо иметь возможность изменять текст подсказок и при определенных обстоятельствах блокировать их вывод. Разобравшись с указанными вопросами, достаточно легко расширить функциональность и вариативность их поведения.
Лично я не люблю этот метод из-за полной потери гибкости. При его использовании решение даже такой тривиальной задачи, как изменение цвета тултипа или времени его нахождения на экране, становится непростым делом + приходится полагаться на недокументированные возможности MFC (нигде не сказано, что CToolTipCtrl лежит в структуре данных потока). Кроме того, MFC постоянно создаёт и разрушает тултип, и его свойства приходится настраивать каждый раз по новой. Чем наживать себе подобный геморрой, проще сразу создать свой CToolTipCtrl и не мучиться... :)
Но это, конечно, исключительно моё ИМХО.
С уважением,
Александр
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re: Как добавить всплывающие подсказки для элементов управле
Первый способ имеет тот недостаток, что если окно Disable'ено, то tool-tip не будет показываться -- он же работает через subclassing и естественно не получает никаких сообщений, когда окно disable'ed.
Re: Как добавить всплывающие подсказки для элементов управле
От:
Аноним
Дата:
25.05.04 12:53
Оценка:
У меня есть окно (главное окно), в которое поток вставляется другое, это другое окно создается в DLL, в качестве параметра функции создания окна, которая находится в DLL, передается HWND главного окна. Ни пнрвый не второй способ описаный сдесь не работает. Как заставить их появиться?
Thrasher.
Re[2]: Как добавить всплывающие подсказки для элементов упра
От:
Аноним
Дата:
25.05.04 13:40
Оценка:
Здравствуйте, Аноним, Вы писали:
А>У меня есть окно (главное окно), в которое поток вставляется другое, это другое окно создается в DLL, в качестве параметра функции создания окна, которая находится в DLL, передается HWND главного окна. Ни пнрвый не второй способ описаный сдесь не работает. Как заставить их появиться?
А>Thrasher.
Создать тултип и принудительно сказать ему TTN_SHOW
Re: Как добавить всплывающие подсказки для элементов управле
В большом диалоге (точнее — в одной из закладок : public CPropertyPage) все прописал, как Вы велели.
Но при заходе в OnInitDialog() на строке
m_ToolTip.Create(this);
попадаю в
ASSERT(pWnd->m_hWnd == NULL); // only do once
в функции AfxHookWindowCreate (строка 639 в файле WINCORE.CPP)
Откуда ''наводка''?
P.S. В этой закладке очень много элементов управления. Большинство из них со встроенными ToolTip, но для одного из них (CStaticIconButton) всплывающие подсказки не появляются. Поэтому и решил применить ''классику''.
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)
Re: Как добавить всплывающие подсказки для элементов управле
OE>до кучи к WinAPI и MFC — как то же самое делается в WTL:
добрый день! столкнулся с такой интересной проблемой (относится к ATL/WTL проектам):
Тултип для Edit поля после кликания на нам пропадает. И не появляется до того момента, пока сначала не покажется другой тултип (если брать пример из статьи — то надо посмотреть тултип на кнопке, а потом опять будет показываться тултип на edit-е).