Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > Что такое хинты |
Автор: dm9 21.3.2005, 20:00 |
Привет всем ![]() Я опять с тулбаром мучаюсь. Тулбар для IE. Создаю кнопочки TToolButton (родитель - TToolBar). Назначаю кнопочкам хинты (hint). Под Windows XP при убирании хинта на экране остаётся какая-то фигня, какое-то, видимо, окно (это не просто нарисованное на экране изображение, а что-то, что не убирается при перерисовке этой части окна). После закрытия окна IE эти окошки пропадают. Вопрос такой. Кто сталкивался? Как боролись? Какие предложения? И главное. Что такое вообще хинт. Можно ли его создать не стандарными средствами, то есть прописыванием поля hint, а как-то через WinAPI? Какие для этого существуют функции? Я навскидку сам ничего не нашёл. |
Автор: dm9 21.3.2005, 21:38 |
Чё-та меня тянет изобретать велосипед и ловить вхождение / выхождение мыши в область кнопки и показывать свою форму как SW_SHOWNA... Но наверняка это делается проще... |
Автор: RA 21.3.2005, 21:40 |
Что я знаю про хинты - hint имеет свой hwn и подченяется всем правилам окон (почти всем). ![]() Вобще есть вероятность, что хинт не убивается, как например это часто встречается в Delphi (в самой среде), если так то нужно ему послать WM_CLOSE. |
Автор: dm9 21.3.2005, 21:43 | ||
Кому? ![]() И когда? При убирании мыши с кнопки? Ох как мне лениво компонент переписывать для того, чтобы сообщение это поймать ![]() |
Автор: RA 21.3.2005, 22:23 | ||||
Конечто ему.
В твоем варианте это хз, не сталкивался с таким. Просто у меня однажды хинт повис я навел на него маус и изпод курсора прочел hwnd. ![]() Добавлено @ 22:24 Хотя текст в хинте это случайно не заголовок окна ? |
Автор: dm9 21.3.2005, 22:37 | ||
![]() ![]() Думаю, сделаю свою форму и буду её неактивной показывать при наведении мыши. |
Автор: p0s0l 22.3.2005, 00:01 | ||
Смотри DRKB -> VCL -> Hints -> ... Там есть примеры, как делать своего наследника от THintWindow, и как делать хинты через WinAPI... |
Автор: сфе 23.3.2005, 06:32 |
hint - это окно типа Edit и подчиняется всем правилам. Работай с ним как с окном. |
Автор: RA 25.3.2005, 10:40 | ||
Сейчас проверил, так оно и есть ![]() Добавлено @ 10:42 А может тебе убивать класс хинтов, вродебы он TDestignHintWindow |
Автор: dm9 29.3.2005, 02:31 | ||
Я решил проблему, создавая хинты таким образом: hintwnd:= THintWindow.create(self); И освобождая таким: hintwnd.releasehandle; Возможно, проблема была в том, что TToolButton не получает сообщения WM_MOUSELEAVE. И вообще, как я понял, ничего не получает при выходе мыши. Мне пришлось обнаруживать вход мыши в область, ловя CM_HINTSHOW для TToolButton и выход - ловя WM_MOUSELEAVE для родителя - TToolbar.
Да, как обычно ![]() ![]() Спасибо за подсказку ![]() |
Автор: dm9 29.3.2005, 02:43 | ||
У меня такая структура, что на один TToolbar - один TToolButton, поэтому так можно было делать. |