Помощь - Поиск - Пользователи - Календарь
Полная версия: Программирование мыши
Форум «Всё о Паскале» > Pascal, Object Pascal > 32 битные компиляторы
Bokul
А как обрабатывать нестандартную мышь (больше двух кнопок)? У меня, например, есть 5 кнопок + колесико, которое можно крутить и нажимать тремя разными способами, как использовать все возможности?
Bokul
Нашел smile.gif . Копать надо в сторону WM_APPCOMMAND message и XBUTTONs
Хотя это сообщение тоже не поддерживается в Fpc sad.gif
volvo
Покажи, КАК ты его обрабатываешь...
Bokul
Ну как обычно - добавляю WM_APPCOMMAND в callback функцию класса, а потом, в соответствии с lParam параметром сообщения, делаю нужное для меня действие. А что?

P.S. Это план, код я не писал..
volvo
В чем проблема? Не знаем кодов сообщений? smile.gif

const
WM_XBUTTONDOWN = $020B;
WM_XBUTTONUP = $020C;
WM_XBUTTONDBLCLK= $020D;
MOUSE_XBUTTON1 = $0001;
MOUSE_XBUTTON2 = $0002;
blum.gif
Bokul
А для WM_APPCOMMAND и его параметра lParam? rolleyes.gif

P.S. Может создать отдельную тему, посвящённую константам WinApi?
volvo
const
WM_APPCOMMAND = $0319;

APPCMD_FIRST = $8000;
APPCOMMAND_BROWSER_BACKWARD = APPCMD_FIRST +1;
APPCOMMAND_BROWSER_FORWARD = APPCMD_FIRST +2;
APPCOMMAND_BROWSER_REFRESH = APPCMD_FIRST +3;
APPCOMMAND_BROWSER_STOP = APPCMD_FIRST +4;
APPCOMMAND_BROWSER_SEARCH = APPCMD_FIRST +5;
APPCOMMAND_BROWSER_FAVORITES = APPCMD_FIRST +6;
APPCOMMAND_BROWSER_HOME = APPCMD_FIRST +7;
APPCOMMAND_VOLUME_MUTE = APPCMD_FIRST +8;
APPCOMMAND_VOLUME_DOWN = APPCMD_FIRST +9;
APPCOMMAND_VOLUME_UP = APPCMD_FIRST +10;
APPCOMMAND_MEDIA_NEXTTRACK = APPCMD_FIRST +11;
APPCOMMAND_MEDIA_PREVIOUSTRACK = APPCMD_FIRST +12;
APPCOMMAND_MEDIA_STOP = APPCMD_FIRST +13;
APPCOMMAND_MEDIA_PLAY_PAUSE = APPCMD_FIRST +14;
APPCOMMAND_LAUNCH_MAIL = APPCMD_FIRST +15;
APPCOMMAND_LAUNCH_MEDIA_SELECT = APPCMD_FIRST +16;
APPCOMMAND_LAUNCH_APP1 = APPCMD_FIRST +17;
APPCOMMAND_LAUNCH_APP2 = APPCMD_FIRST +18;
APPCOMMAND_BASS_DOWN = APPCMD_FIRST +19;
APPCOMMAND_BASS_BOOST = APPCMD_FIRST +20;
APPCOMMAND_BASS_UP = APPCMD_FIRST +21;
APPCOMMAND_TREBLE_DOWN = APPCMD_FIRST +22;
APPCOMMAND_TREBLE_UP = APPCMD_FIRST +23;
APPCOMMAND_MICROPHONE_VOLUME_MUTE = APPCMD_FIRST +24;
APPCOMMAND_MICROPHONE_VOLUME_DOWN = APPCMD_FIRST +25;
APPCOMMAND_MICROPHONE_VOLUME_UP = APPCMD_FIRST +26;
APPCOMMAND_HELP = APPCMD_FIRST +27;
APPCOMMAND_FIND = APPCMD_FIRST +28;
APPCOMMAND_NEW = APPCMD_FIRST +29;
APPCOMMAND_OPEN = APPCMD_FIRST +30;
APPCOMMAND_CLOSE = APPCMD_FIRST +31;
APPCOMMAND_SAVE = APPCMD_FIRST +32;
APPCOMMAND_PRINT = APPCMD_FIRST +33;
APPCOMMAND_UNDO = APPCMD_FIRST +34;
APPCOMMAND_REDO = APPCMD_FIRST +35;
APPCOMMAND_COPY = APPCMD_FIRST +36;
APPCOMMAND_CUT = APPCMD_FIRST +37;
APPCOMMAND_PASTE = APPCMD_FIRST +38;
APPCOMMAND_REPLY_TO_MAIL = APPCMD_FIRST +39;
APPCOMMAND_FORWARD_MAIL = APPCMD_FIRST +40;
APPCOMMAND_SEND_MAIL = APPCMD_FIRST +41;
APPCOMMAND_SPELL_CHECK = APPCMD_FIRST +42;
APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE = APPCMD_FIRST +43;
APPCOMMAND_MIC_ON_OFF_TOGGLE = APPCMD_FIRST +44;
APPCOMMAND_CORRECTION_LIST = APPCMD_FIRST +45;
APPCOMMAND_MEDIA_PLAY = APPCMD_FIRST +46;
APPCOMMAND_MEDIA_PAUSE = APPCMD_FIRST +47;
APPCOMMAND_MEDIA_RECORD = APPCMD_FIRST +48;
APPCOMMAND_MEDIA_FAST_FORWARD = APPCMD_FIRST +49;
APPCOMMAND_MEDIA_REWIND = APPCMD_FIRST +50;
APPCOMMAND_MEDIA_CHANNEL_UP = APPCMD_FIRST +51;
APPCOMMAND_MEDIA_CHANNEL_DOWN = APPCMD_FIRST +52;
Хватит, или еще чего-то нету?

Да, вот этого не было:
MK_LBUTTON  = $0001;
MK_RBUTTON = $0002;
MK_SHIFT = $0004;
MK_CONTROL = $0008;
MK_MBUTTON = $0010;
MK_XBUTTON1 = $0020;
MK_XBUTTON2 = $0040;
Bokul
Спасибо!!! good.gif
Вот также нашел некоторые константы Сообщения WM_XXX, но не все.. sad.gif
hardcase
А ещё есть DirectInput.....
Я через него свой джойстик обрабатывал....
Bokul
Это как? На уровне драйвера?
hardcase
Нет, это часть библиотеки DirectX, есть ещё Direct3D, DirectDraw и другие.

Это естественно, объектно-ориентированная библиотека.
Общий принцип работы с устройствами ввода (клавиатурами, джойстиками, джойпадами, мышами) там сводится к периодическому их опросу, нет встроенной событийной модели.

В сети есть порт С++ заголовков на Delphi (и соответственно совместимых с FPC), правда я его не встречал - не приходилось работать с Direct'ом на Делфи.
volvo
Цитата
В сети есть порт С++ заголовков на Delphi
Не только... На FPC тоже портировали... Не все из Дельфей было совместимо с FPC...

Здесь ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.