PMG
http://forum.pmg.org.ru/

Вопрос: Обработка мыши и JPG в текстуру
http://forum.pmg.org.ru/viewtopic.php?f=1&t=275
Страница 1 из 1

Автор:  Woland [ 09 фев 2006 02:05 ]
Заголовок сообщения:  Вопрос: Обработка мыши и JPG в текстуру

Есть пара вопросов:
1. Как обработать нажатие клавиши мыши, есть ли какое-нибудь значение как например у левой стрелки VK_LEFT, как получать координаты мыши я знаю.
2. Возможно ли использовать файлы JPG в качестве текстур, если да, то как. Хочу прогу сделать максимально компактной, а BMP этому, естественно, не способствует...

Автор:  MagicWolf [ 09 фев 2006 10:20 ]
Заголовок сообщения: 

1 - не совсем понятно ;(. Получаешь координаты указателя и состояние клавиш в зависимости от этого реализуешь свой алгоритм. Например, есть место на экране при нажатии на которое - выход из проги.

2 - это надо либу подходящую использовать. Например Devil. Вот ссылки на либы:

http://www.xdp.it/cximage.htm - CxImage for Win
http://openil.sourceforge.net/ - DevIL
http://www.imagemagick.org/
http://freeimage.sourceforge.net/
http://www.paintlib.de/
http://www.graphicsmagick.org/

По-моему лучше всего DevIL, так как там есть сразу загрузка в текстуру.
http://forum.pmg.org.ru/viewtopic.php?t=16

Автор:  Woland [ 09 фев 2006 19:13 ]
Заголовок сообщения: 

Не, как сделать обработку события мне ясно, просто я не знаю значение клавиш мыши, знаю для стрелок (VK_LEFT, VK_RIGHT,..), знаю для F'ов и т.д., а для мыши я знаю только как получить ее местоположение [GetMousePos(POINT mpos)], я не знаю как получить сосотояние клавиш...

Автор:  MagicWolf [ 10 фев 2006 14:00 ]
Заголовок сообщения: 

GetMousePos - не знаю такой функции в Win32 API?!

Знаю только что нужно обрабатывать сообщения от Win. Вот пример:
Код:
  case WM_LBUTTONDOWN:
    ev_mouse.button_mouse |= 1;
    ev.what[0] = EVENT_MOUSE_KEY;
    ev.data[0] = (void*)&ev_mouse;
    ev.count = 1;
    event_scenes();
    break;
  case WM_LBUTTONUP:
    ev_mouse.button_mouse &= 0xe;
    ev.what[0] = EVENT_MOUSE_KEY;
    ev.data[0] = (void*)&ev_mouse;
    ev.count = 1;
    event_scenes();
    break;
     
  case WM_RBUTTONDOWN:
    ev_mouse.button_mouse |= 2;
    ev.what[0] = EVENT_MOUSE_KEY;
    ev.data[0] = (void*)&ev_mouse;
    ev.count = 1;
    event_scenes();
    break;
  case WM_RBUTTONUP:
    ev_mouse.button_mouse &= 0xd;
    ev.what[0] = EVENT_MOUSE_KEY;
    ev.data[0] = (void*)&ev_mouse;
    ev.count = 1;
    event_scenes();
    break;
     
  case WM_MBUTTONDOWN:
    ev_mouse.button_mouse |= 4;
    ev.what[0] = EVENT_MOUSE_KEY;
    ev.data[0] = (void*)&ev_mouse;
    ev.count = 1;
    event_scenes();
    break;
  case WM_MBUTTONUP:
    ev_mouse.button_mouse &= 0xb;
    ev.what[0] = EVENT_MOUSE_KEY;
    ev.data[0] = (void*)&ev_mouse;
    ev.count = 1;
    event_scenes();
    break;

  case WM_MOUSEMOVE:
    ev_mouse.x_mouse = GET_X_LPARAM(lParam);
    ev_mouse.x_mouse = GET_Y_LPARAM(lParam);
    ev.what[0] = EVENT_MOUSE_XY;
    ev.data[0] = (void*)&ev_mouse;
    ev.count = 1;
    event_scenes();
    break;

Автор:  Woland [ 10 фев 2006 19:40 ]
Заголовок сообщения: 

Упс... Я имел ввиду GetCursorPos. Спасибо за помощь!

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/