![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Svia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.5.2009 Репутация: нет Всего: нет |
Есть HDC, на нем что-то нарисовано.
Есть совместимый с ним DC. На нем, допустим, нарисован прямоугольник. Хочется заместить курсор мыши на то, что лежит во втором DC. Из файла читать нельзя - изображение курсора может обновляться. Разумеется, отрисовка должна вестись верно, с сохранением фона, и затиранием следов курсора. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Посмотри в сторону функций ImageList: DragEnter, DragLeave, DragMove
-------------------- ... |
|||
|
||||
Svia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.5.2009 Репутация: нет Всего: нет |
Что такое ImageList? MFC не использую, чистый winapi, и вообще такого класса кроме как в дотнете нет.
|
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Если быть точным то CImageList. Зачем тогда задаешь вопрос в ветке MFC ? Используй тогда IImageList и его методы, там много интересного. -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Svia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.5.2009 Репутация: нет Всего: нет |
Может я не туда смотрю, но у меня на экране название подфорума "Форум -> Программирование -> C++ -> C/C++: Системное программирование и WinAPI (еще)". Где там слово "MFC"? Про IImageList нашел. На крайний случай, конечно, попробую использовать его. Думаю, что есть что-то простое, не столь навороченное как список картинок. К тому же, судя по отзывам в инете очень он неважно работает с перетаскивание картинок "нестандартного размера". |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Извиняюсь, наверное не проснулся утром ![]()
Можно ссылку где такое прочитали? -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Это я вчера перенесла, так что не очень-то, правильно тебе замечание сделали. ![]() Если под "нестандартным размером" имеется в виду просто большие картинки, а "неважно" - это "медленно", то да, GDI+ вообще не чемпион по скорости. Насчет ImageList: есть, конечно и MFC-оболочка, но вообще-то это набор функций АПИ: ImageList_EndDrag etc. Ничего навороченного в списке картинок нет. Если будешь рисовать сам - примерно тоже самое придется написать руками. Другое дело, если у тебя действительно большая картинка. Но тогда нужно определиться, как именно ты ее хочешь таскать... -------------------- ... |
|||
|
||||
Svia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.5.2009 Репутация: нет Всего: нет |
Я собрал приложение для этого проверки. Да, попробую использовать методы указанного интерфейса.
Таскаться могу рисунки вплоть до 400х400 точек. На деле мне вообще надо таскать что-то нарисованное на канве cairo и под виндой (чего ради и искал) и под маком (ладно жоть не мне портировать). Но, к сожалению, любителей кайры тут не столь много =). Потому и искал максимально кроссплатформенное решение. Ну что-то вроде "тебе надо сделат две маски и заюзать CreateCursor". Т.е. некую функцию, которую проще будет спортировать чем весь commctl32.dll. To Andrey44: Как второй вариант (еще не пробовал) использую упомянутый CreateCursor (ну ооочень лень маски на ходу делать =)), но (тут я напутал) именно он хреново работает с курсорами нестандартных размеров (первая ссылка по createcursor c++ big size) Так что для винды, думаю, решение можно считать найденным. По-крайней мере это кажется меньшим из зол Добавлено @ 10:51 [QUOTE=Earnest,2.6.2009, 07:39] Тут проблема в динамике перемещения. Картинка будет замещать курсор, т.е должна двигаться достаточно быстро - почти так же быстро как простая стрелка. Это сообщение отредактировал(а) GremlinProg - 2.6.2009, 10:54 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Создавать курсор 400*400 - это, конечно, слишком... А вот насчет DragImage - не думаю, что сильно тормозить будет. А если будет, то рисуй сам: совместимый контекст в памяти, скопировать туда картинку,
при перемещении мышки восстановить изображение на стором месте и нарисовать на новом (запомнив, что было). Все через BitBlt. -------------------- ... |
|||
|
||||
Svia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.5.2009 Репутация: нет Всего: нет |
Суть-то понятна. Хочется, чего-то легкого, что бы клиппингом областей не заморачиваться, вроде как дернул за OnDraw разик, он вообще всё перерисовал.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |