![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| Ferrisgeneral |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.1.2010 Репутация: нет Всего: нет |
как лучше всего в DirectX реализовать изменение вида курсора при достяжении края окна ?
может курсор надо использавить стандартные курсоры или в виде спрайта или еще как-то ? надо проверять WinAPI'шными функциями положения мышки в окне чтобы определить момент смены курсора ? |
|||
|
||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
Оконный вывод D3D не меняет на своей области вид курсора, коий, кстати, определяется классом окна
Можешь задать свой вопрос более конкретно? -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| Ferrisgeneral |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.1.2010 Репутация: нет Всего: нет |
видел например пару реализаций где курсор заменяется WinAPI'шными функциями, типа ShowCursor, LoadCursor, SetCursor ... , ну и реализыции где курсор отрисовывали в поле окна в виде спрайта с текстуркой курсора.
Какой вариант предпочтительнее использовать и в каких ситуациях. Приложение не всегда будет иметь оконный режим, но так же и полноэкранный. Хочется чтобы при достяжении края (приближение к краю на какое-то растояние) окна (оконный режим) или края экрана (полноэкранный режим), курсосор менял свой вид и оставался в окне если курсор вышел за пределы окна (при выходе за пределы окна курсор должен меняться на системный). |
|||
|
||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
Пожалуй, вариант со спрайтом Во-первых, потому, что проще нарисовать требуемый курсор, во-вторых, проще выполнить взаимодействие курсора с игрой -- сложная анимация, плавные превращения из одного курсора в другой и т.д. Но DX имеет собственный механизм замещения курсора, IDirect3DDevice9::SetCursorProperties, так что использовать функции User32 несколько странно -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| Ferrisgeneral |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.1.2010 Репутация: нет Всего: нет |
спасибо за разъеснение.
про SetCursorProperties даже и не знал. А с WinAPI'шными функциями и дело не хотелось иметь. |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |