Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CToolTipCtrl, Ctrl и CToolTipCtrl 
V
    Опции темы
eniac
Дата 21.9.2009, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вечер добрый!
Мне нужно сделать так чтоб СToolTipCtrl работал только когда Ctrl нажат...
PM MAIL   Вверх
Andrey44
Дата 22.9.2009, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Цитата(MSDN)

Call this function to activate or deactivate a tool tip control.

 
void Activate( 
   BOOL bActivate  
);
 


И следи за нажатием на Ctrl


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
eniac
Дата 22.9.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Andrey44 @  22.9.2009,  06:53 Найти цитируемый пост)
his function to activate or deactivate

А в каком месте следить?

Я пытаюсь это сделать в OnToolHitTest в своем класе ToolTip (class ToolTip : public CToolTipCtrl), но програма никогда туда не заходит.
PM MAIL   Вверх
Andrey44
Дата 22.9.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Я бы следил в диалоговом окне
Ловим WM_KEYDOWN if nChar==VK_CTRL Activate(true)
Ловим WM_KEYUP if nChar==VK_CTRL Activate(false)


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
eniac
Дата 22.9.2009, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Но у меня куча диалоговых окон и я б не хотел в каждом писать обработчик, както это не практично

PM MAIL   Вверх
Earnest
Дата 23.9.2009, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



OnToolHitTest предназначена для обработки исключительно стандартного тултипа, создаваемого оболочкой MFC. А у тебя, как я поняла, свой класс? Кроме того, OnToolHitTest - это обрабочика владельца тултипа, а не самого тултипа. Поэтому и не заходит. 
Далее, если речь идет о прикручивании такого тултипа только к диалоговым окнам, то аргумент "у меня куча окон" не катит. Сделай базовый класс и наследуйся. Можно даже (и лучше) делать такой класс неоконным миксом (т.е. не наследником окна или диалога, и подмешивать его вторым при определении своих классов). Или сделать шаблон (чтобы гибко выбирать базовые классы). И тот и другой подход будут работать не только с диалогами, но и с любыми окнами. Код пишешь один раз, модификация окон, желающих использовать такой тултип, минимальна. Только не KWYDOWN ловить, а делать это в PreTranslateMessage (не все нажатия доходят до окна).
И есть другой вариант - повесить хук WH_GETMESSAGE на свой процесс, отслеживать контрол и активировать-деактивировать тултип. Только нужно этот тултип как-то добыть... не глобальную же переменную заводить... В общем, есть как плюсы, так и минусы.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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