А как обрабатывать нестандартную мышь (больше двух кнопок)? У меня, например, есть 5 кнопок + колесико, которое можно крутить и нажимать тремя разными способами, как использовать все возможности?
Нашел . Копать надо в сторону http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_appcommand.asp и http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/aboutmouseinput.asp
Хотя это сообщение тоже не поддерживается в Fpc
Покажи, КАК ты его обрабатываешь...
Ну как обычно - добавляю WM_APPCOMMAND в callback функцию класса, а потом, в соответствии с lParam параметром сообщения, делаю нужное для меня действие. А что?
P.S. Это план, код я не писал..
В чем проблема? Не знаем кодов сообщений?
const
WM_XBUTTONDOWN = $020B;
WM_XBUTTONUP = $020C;
WM_XBUTTONDBLCLK= $020D;
MOUSE_XBUTTON1 = $0001;
MOUSE_XBUTTON2 = $0002;
А для WM_APPCOMMAND и его параметра lParam?
P.S. Может создать отдельную тему, посвящённую константам WinApi?
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;
Спасибо!!!
Вот также нашел некоторые константы http://www.delphikingdom.com/asp/messages.asp?prefix=WM, но не все..
А ещё есть DirectInput.....
Я через него свой джойстик обрабатывал....
Это как? На уровне драйвера?
Нет, это часть библиотеки DirectX, есть ещё Direct3D, DirectDraw и другие.
Это естественно, объектно-ориентированная библиотека.
Общий принцип работы с устройствами ввода (клавиатурами, джойстиками, джойпадами, мышами) там сводится к периодическому их опросу, нет встроенной событийной модели.
В сети есть порт С++ заголовков на Delphi (и соответственно совместимых с FPC), правда я его не встречал - не приходилось работать с Direct'ом на Делфи.