Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что такое хинты, и как их показывать 
:(
    Опции темы
dm9
Дата 21.3.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Привет всем smile

Я опять с тулбаром мучаюсь. Тулбар для IE.

Создаю кнопочки TToolButton (родитель - TToolBar). Назначаю кнопочкам хинты (hint). Под Windows XP при убирании хинта на экране остаётся какая-то фигня, какое-то, видимо, окно (это не просто нарисованное на экране изображение, а что-то, что не убирается при перерисовке этой части окна). После закрытия окна IE эти окошки пропадают.

Вопрос такой.

Кто сталкивался? Как боролись? Какие предложения?

И главное. Что такое вообще хинт. Можно ли его создать не стандарными средствами, то есть прописыванием поля hint, а как-то через WinAPI? Какие для этого существуют функции? Я навскидку сам ничего не нашёл.

PM MAIL ICQ   Вверх
dm9
Дата 21.3.2005, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Чё-та меня тянет изобретать велосипед и ловить вхождение / выхождение мыши в область кнопки и показывать свою форму как SW_SHOWNA...

Но наверняка это делается проще...


Это сообщение отредактировал(а) dm9 - 21.3.2005, 21:39
PM MAIL ICQ   Вверх
RA
Дата 21.3.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Что я знаю про хинты - hint имеет свой hwn и подченяется всем правилам окон (почти всем). smile


Вобще есть вероятность, что хинт не убивается, как например это часто встречается в Delphi (в самой среде), если так то нужно ему послать WM_CLOSE.
PM   Вверх
dm9
Дата 21.3.2005, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Цитата(RAdmin @ 21.3.2005, 21:40)
если так то нужно ему послать WM_CLOSE


Кому? smile Как найти его hwnd?
И когда? При убирании мыши с кнопки? Ох как мне лениво компонент переписывать для того, чтобы сообщение это поймать smile Но возможно это вариант. Только как найти hwnd? Или он доступен в каком-то модуле? Надо посмотреть...


Это сообщение отредактировал(а) dm9 - 21.3.2005, 21:48
PM MAIL ICQ   Вверх
RA
Дата 21.3.2005, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Цитата(dm9 @ 21.3.2005, 21:43)
Кому?  Как найти его hwnd?

Конечто ему.



Цитата(dm9 @ 21.3.2005, 21:43)
Как найти его hwnd?

В твоем варианте это хз, не сталкивался с таким.

Просто у меня однажды хинт повис я навел на него маус и изпод курсора прочел hwnd. smile

Добавлено @ 22:24
Хотя текст в хинте это случайно не заголовок окна ?
PM   Вверх
dm9
Дата 21.3.2005, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Цитата(RAdmin @ 21.3.2005, 22:23)
Хотя текст в хинте это случайно не заголовок окна ?


smile))))))))))))))))))))))))) Чё-то так не хочется smile

Думаю, сделаю свою форму и буду её неактивной показывать при наведении мыши.

PM MAIL ICQ   Вверх
p0s0l
Дата 22.3.2005, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Цитата(dm9 @ 21.3.2005, 20:00)
Можно ли его создать не стандарными средствами, то есть прописыванием поля hint, а как-то через WinAPI?

Смотри DRKB -> VCL -> Hints -> ...
Там есть примеры, как делать своего наследника от THintWindow, и как делать хинты через WinAPI...




--------------------
С уважением, г-н Посол.
PM   Вверх
сфе
Дата 23.3.2005, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.3.2005

Репутация: нет
Всего: нет



hint - это окно типа Edit и подчиняется всем правилам. Работай с ним как с окном.
PM MAIL   Вверх
RA
Дата 25.3.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Цитата(RAdmin @ 21.3.2005, 22:23)
Хотя текст в хинте это случайно не заголовок окна ?


Сейчас проверил, так оно и есть smile
Добавлено @ 10:42
А может тебе убивать класс хинтов, вродебы он TDestignHintWindow
PM   Вверх
dm9
Дата 29.3.2005, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Я решил проблему, создавая хинты таким образом:
hintwnd:= THintWindow.create(self);
И освобождая таким:
hintwnd.releasehandle;

Возможно, проблема была в том, что TToolButton не получает сообщения WM_MOUSELEAVE. И вообще, как я понял, ничего не получает при выходе мыши. Мне пришлось обнаруживать вход мыши в область, ловя CM_HINTSHOW для TToolButton и выход - ловя WM_MOUSELEAVE для родителя - TToolbar.


Цитата(p0s0l @ 22.3.2005, 01:01)
Смотри DRKB -> ...


Да, как обычно smile Как кому другому ответ искать, так первым делом в DRKB. А как себе smile
Спасибо за подсказку smile

PM MAIL ICQ   Вверх
dm9
Дата 29.3.2005, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Цитата(dm9 @ 29.3.2005, 03:31)
ловя WM_MOUSELEAVE для родителя


У меня такая структура, что на один TToolbar - один TToolButton, поэтому так можно было делать.

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.