Как правильно работать с ListView_CreateDragImage() ?

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
[:: SynTronic ::]
Сообщения: 17
Зарегистрирован: 25 дек 2008, 15:37

Есть ListView :)
Вызываю макрос ListView_CreateDragImage(), получаю ImageList нужного размера, но с полностью белым фоном! Уже не знаю как бороться!

Если добавить к ListView imageList с иконками без масок для item'ов, то получаю в итоге опять белый ImageList, но уже с иконкой и текстом, который сделан в виде прозрачности (т.е. через текст видно что под ImageList'ом).

Если добавляю к ListView ImageList с bmp да ещё и с маской, то получаю белый фон с bmp'шкой, на текст даже и намёка нет.

Застрелюсь скоро, уже 6 часов долблюсь, не могу понять что не так....

Как получить нормальный человеческий ImageList для перетаскивания?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Конкретно я не работал с анимацией перетаскивания. Примеры в инете не пробовал искать? Вот здесь какой-то пример. Там не ListView, а TreeView, но смысл тот же.

http://sources.ru/cpp/controls/open_nod ... drop.shtml
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
[:: SynTronic ::]
Сообщения: 17
Зарегистрирован: 25 дек 2008, 15:37

Спасибо за ответ :) Все поисковики перерыл, а там либо на VB6, либо на Дельфи. Я в том коде почти ничего понять не могу. А из того что понял, вроде всё правильно делаю...
Вот отсюда код брал в качестве шаблона - http://www.codeproject.com/KB/list/jianghong.aspx.
Спасибо, сейчас получше поищу примеры с TreeView...
[:: SynTronic ::]
Сообщения: 17
Зарегистрирован: 25 дек 2008, 15:37

Решение проблемы нашёл - шрифт видите ли не похдоходит.... С MS Sans Serif отображается.
Но это не выход!
Если ли решение? :) ))) Почему именно так?
[:: SynTronic ::]
Сообщения: 17
Зарегистрирован: 25 дек 2008, 15:37

Вот и окончательное и единственное решение проблемы, заключающеся в том, что при использовании common controls 6 с визуальными стилями и новыми шрифтами CreateDragImage не рисует их.

Код: Выделить всё

// получаем стандартный шрифт
HFONT hOldFont = (HFONT)SendMessage(hWnd, WM_GETFONT, 0, 0);
// создаём новый шрифт MS Sans Serif с кеглем 8
LOGFONT lf = {0};
StringCchCopy(lf.lfFaceName, ARRAYSIZE(lf.lfFaceName), L"MS Sans Serif");
lf.lfHeight = 8;
HFONT hTempFont = CreateFontIndirect(&lf);
// уставливаем его без перерисовки ListView
SendMessage(hPlaylist, WM_SETFONT, (WPARAM)hTempFont, FALSE);
// получаем ImageList
hDragIL = ListView_CreateDragImage(hPlaylist, iPos, &p);
// устанавливаем обрано стандартный шрифт
SendMessage(hPlaylist, WM_SETFONT, (WPARAM)hOldFont, FALSE);
Ответить