ZenGL

Please login or register.

Login with username, password and session length
Advanced search  

News:

Pages: [1] 2

Author Topic: Как поменять курсор мыши?  (Read 4999 times)

0 Members and 1 Guest are viewing this topic.

Vladislav

  • Newbie
  • *
  • Offline Offline
  • Posts: 11
Как поменять курсор мыши?
« on: 2011, Oct, 16, 15:24:38 »

Как с помощью ZenGL поменять курсор мыши? И возможно ли это?
Logged

Andru

  • Administrator
  • Hero Member
  • *****
  • Online Online
  • Posts: 1302
  • Developer of ZenGL
Re: Как поменять курсор мыши?
« Reply #1 on: 2011, Oct, 16, 17:07:04 »

На данный момент курсор мыши поменять средствами ZenGL нельзя. Можно воспользоваться WinAPI(функция SetCursor), но ZenGL выполняет обработку сообщения WM_SETCURSOR, что может привести к сбрасыванию курсора.
Logged

Vladislav

  • Newbie
  • *
  • Offline Offline
  • Posts: 11
Re: Как поменять курсор мыши?
« Reply #2 on: 2011, Oct, 17, 07:50:03 »

И что мне делать? Имею ли я право модифицировать движок для того, чтобы поменять курсор?
Logged

Andru

  • Administrator
  • Hero Member
  • *****
  • Online Online
  • Posts: 1302
  • Developer of ZenGL
Re: Как поменять курсор мыши?
« Reply #3 on: 2011, Oct, 17, 12:22:46 »

Quote
И что мне делать? Имею ли я право модифицировать движок для того, чтобы поменять курсор?
Естественно можно модифицировать и собрать в dll'ку свою версию :) А там уже по надобности соблюдать формальности LGPL лицензии(аки открытие модифицированного исходного кода ZenGL). Да и возможно позже я реализую кроссплатформенный вариант wnd_SetCursor, пока просто нет времени и особой необходимости в таком функционале.
Logged

Vladislav

  • Newbie
  • *
  • Offline Offline
  • Posts: 11
Re: Как поменять курсор мыши?
« Reply #4 on: 2011, Oct, 17, 18:22:41 »

Code: [Select]
WM_SETCURSOR:   
      begin
        if ( appFocus ) and ( LOWORD ( lparam ) = HTCLIENT ) and ( not appShowCursor ) Then
          SetCursor( 0 )
        else
          SetCursor( LoadCursor( 0, IDC_ARROW ) ); //
      end;

Как я понял, этот кусок отвечает за обработку сообщений Windows. Я правильно понял? Что за параметры в if? После else идёт установка курсора по умолчанию? Что происходит между if и else? Как мне изменить движок, чтобы я мог менять курсор?

P.S. Заранее огромное спасибо!
Logged

Vladislav

  • Newbie
  • *
  • Offline Offline
  • Posts: 11
Re: Как поменять курсор мыши?
« Reply #5 on: 2011, Oct, 17, 18:25:06 »

А может вообще убрать этот кусок из кода движка? Тогда SetCursor заработает?
P.S. Помогите, поззззяяяязззяяя :'(.
Logged

Andru

  • Administrator
  • Hero Member
  • *****
  • Online Online
  • Posts: 1302
  • Developer of ZenGL
Re: Как поменять курсор мыши?
« Reply #6 on: 2011, Oct, 17, 20:47:40 »

Всё довольно просто - надо завести свою переменную типа HCURSOR и подставлять её вместо LoadCursor( 0, IDC_ARROW ). Самой же переменной можно присваивать разнообразные варианты курсора используя LoadCursor, например курсор ожидания:
Code: Pascal
  1. myCursor := LoadCursor( 0, IDC_WAIT );
Или воспользоваться LoadCursorFromFile и загрузить полностью свой курсор.
Logged

Vladislav

  • Newbie
  • *
  • Offline Offline
  • Posts: 11
Re: Как поменять курсор мыши?
« Reply #7 on: 2011, Oct, 18, 17:20:57 »

Ну например я вместо LoadCursor(0, IDC_ARRAW) вставляю LoadCursorFromFile. В библиотеке MSDN сказано, что в виде параметра этой функции передаётся имя курсора. Я не силён в WinAPI. Какой параметр мне передать в LoadCursorFromFile, чтобы с помощью SetCursor я мог бы устанавливать какой угодно курсор?
Logged

Andru

  • Administrator
  • Hero Member
  • *****
  • Online Online
  • Posts: 1302
  • Developer of ZenGL
Re: Как поменять курсор мыши?
« Reply #8 on: 2011, Oct, 18, 17:48:36 »

Если погуглить или внимательно прочитать документацию то обнаружиться, что единственный параметр функции LoadCursorFromFile это имя файла... т.е. нужно указывать обычный путь к файлу с расширением .cur :) Но просто подставлять это вместо LoadCursor(0, IDC_ARRAW) думаю не стоит - постоянно ведь будет загружать с файла, так что лучше воспользоваться переменной как я описал выше.
Logged

Vladislav

  • Newbie
  • *
  • Offline Offline
  • Posts: 11
Re: Как поменять курсор мыши?
« Reply #9 on: 2011, Oct, 18, 17:57:35 »

Спасибо за простой и удобный движок :). Я уже справился!

Только одна рекомендация: советую сделать русскую документацию ;).

P.S. Я влепил такой код:
Code: [Select]
WM_SETCURSOR:
      begin
        if ( appFocus ) and ( LOWORD ( lparam ) = HTCLIENT ) and ( not appShowCursor ) Then
          SetCursor( 0 )
        else
          SetCursor(lParam);
      end;
Logged

Andru

  • Administrator
  • Hero Member
  • *****
  • Online Online
  • Posts: 1302
  • Developer of ZenGL
Re: Как поменять курсор мыши?
« Reply #10 on: 2011, Oct, 18, 18:07:43 »

Quote
Только одна рекомендация: советую сделать русскую документацию
Пока я даже не знаю как-бы её сделать без лишнего геморроя и создания отдельной wiki. Да и собственно любой уважающий себя разработчик должен таки владеть минимальным английским, а особо сложный я и сам не использую в документации :)
Logged

Vladislav

  • Newbie
  • *
  • Offline Offline
  • Posts: 11
Re: Как поменять курсор мыши?
« Reply #11 on: 2011, Oct, 18, 18:21:43 »

Ну хоть какая-то документация! Спасибо!
Logged

wagenheimer

  • Full Member
  • ***
  • Offline Offline
  • Posts: 126
Re: Как поменять курсор мыши?
« Reply #12 on: 2012, May, 26, 21:10:49 »

Any chance on this being implemented natively on ZenGL? Big Fish Games is asking to "The system cursor must be  context sensitive".
Logged
Cezar Wagenheimer
Green Sauce Games

ZWayfarer

  • Jr. Member
  • **
  • Offline Offline
  • Posts: 91
Re: Как поменять курсор мыши?
« Reply #13 on: 2012, Jun, 07, 18:09:02 »

Прокомментируйте, пожалуйста, требование Big Fish. Если я отключу видимость курсора в ZenGL и вместо него буду использовать спрайт - Big Fish, это не понравится?
Logged

Andru

  • Administrator
  • Hero Member
  • *****
  • Online Online
  • Posts: 1302
  • Developer of ZenGL
Re: Как поменять курсор мыши?
« Reply #14 on: 2012, Jun, 07, 18:15:06 »

Wayfarer
Какой смысл задавать все эти вопросы до того, как свяжешься с издателем и согласуешь с ними издание твоей игры? :) У каждого издателя свои требования, так что решай пробелмы по мере их поступления.
Logged

ZWayfarer

  • Jr. Member
  • **
  • Offline Offline
  • Posts: 91
Re: Как поменять курсор мыши?
« Reply #15 on: 2012, Jun, 07, 18:25:54 »

Раз уж тема появилась, хотелось бы сразу решить вопрос, чтоб потом не переделывать :)
Logged
Pages: [1] 2
 

Page created in 0.167 seconds with 23 queries.