Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Всплывающие подсказки в ListCtrl'е 
V
    Опции темы
AndreySol
Дата 15.10.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Дайте пример как правильно сделать всплывающие подсказки для ListCtrl'а, расположенного на диалоге. Пробовал сделать так:
В OnInitDialog создаю
Код

m_tooltip.Create(this);
m_tooltip.SetDelayTime(500);
m_tooltip.Activate(TRUE);

далее, в PreTranslateMessage
Код

m_tooltip.RelayEvent(pMsg);

далее в OnNotify
Код

NMHDR *lpNMHDR = (NMHDR*) lParam;

// устанавливаю текст подсказки
if(lpNMHDR->code == LVN_GETINFOTIP)
{
    // для примера
    CString szToolTipText = "String 1\nString 2\nString 3\nString 4";

    // получаем указатель на структуру для подсказок
    NMLVGETINFOTIP* infotip = (NMLVGETINFOTIP*) lpNMHDR;

    infotip->dwFlags = 0;
    infotip->cchTextMax = szToolTipText.GetLength();
    infotip->pszText = (LPTSTR) (LPCTSTR) 

szToolTipText.GetBuffer(szToolTipText.GetLength());
}

В результате получаются кракозяблики. Подозреваю что причина может быть связана с UNICODE, но не знаю как правильно сделать.
Помогите.
PM MAIL   Вверх
Earnest
Дата 15.10.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Скорее, дело в том, что ты возвращаешь указатель на авто-объект. Попробуй сделать строку статической.
И зачем тебе дополнительный тултип в диалоге? У лист-контрола свой собственный есть.


--------------------
...
PM   Вверх
AndreySol
Дата 17.10.2006, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

У лист-контрола свой собственный есть. 

А как его правильно использовать ?
PM MAIL   Вверх
Earnest
Дата 20.10.2006, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Смотря чего ты хочешь. А вообще, добраться до родного тултип-контрола можно так: GetToolTips. Тольео имей в виду: возвращается врменное окно, так что хранить можно только его hwnd.

Добавлено @ 10:05 
Я хотела сказать, что не нужно тебе создавать дополнительный тултип-контрол. Достаточно обрабатывать LVN_GETINFOTIP.


--------------------
...
PM   Вверх
AndreySol
Дата 21.10.2006, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так я вроде LVN_GETINFOTIP и обрабатываю, вот только почему кракозяблики ?
Может все-же infotip->pszText нуна по-другому заполнять ?
PM MAIL   Вверх
Earnest
Дата 23.10.2006, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Я же писала вверху: у тебя запиоминается указатель на временную строку. При выходе из функции она разрушается. Не факт, но если указатель не используется сразу же, то это и есть причина. Попробуй для начала сделать строку статической.


--------------------
...
PM   Вверх
AndreySol
Дата 29.10.2006, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот так все заработало:
Код

infotip->cchTextMax = szToolTipText.GetLength();
_tcscpy(infotip->pszText, szToolTipText);

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


 




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


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

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