Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Необычная работа с МЫШКОЙ 
:(
    Опции темы
dolphik
  Дата 5.3.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.12.2006

Репутация: нет
Всего: нет



Всем доброго времени суток!
Разрабатываю тут програмку одну, и смотрю на свою мишку- в ней 5 кнопок, а обычно раньше у пользователей 3-левая,правая, на колесе. Но со временем народ расчехляеться и все покупают крутые мышки. Мне удобно с моёй мишкой работать в проводнике-2 клавиши замечательно подходят для перемещения взад,вперёд по папкам.
Так вот хочу использовать дополнительные кнопки мишки в своей проге, но встандарных делфи сонтролах обрабатываеться только 3 кнопкки 
Например обрабатываю вотето событие:
Код


procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin

end;



где
 
Код


TMouseButton = (mbLeft, mbRight, mbMiddle);


Помогите пожалуйста добраться дло всех остальных кнопок мышки!
PM MAIL   Вверх
aktuba
Дата 5.3.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Скорее всего дополнительные кнопки на мыши - это комбинации Alt/Ctrl/Shift + стандартные кнопки. Попробуй...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Snowy
Дата 5.3.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



2 способа.
1. Ловить WM_XBUTTONDOWN и WM_XBUTTONUP.
2. Проверять вручную состояние VK_XBUTTON1 и VK_XBUTTON2.

На форме 2 чекбокса
Код

const // константы честно добыты в неравном бою :)
  WM_XBUTTONDOWN = $020B; // сообщение нажатия
  WM_XBUTTONUP = $020C; // сообщение отжатия
  MK_XBUTTON1 = $20; // модификатор1 
  MK_XBUTTON2 = $40; // модификатор2
  VK_XBUTTON1 = 5; // Код X-кнопок
  VK_XBUTTON2 = 6; // последние две есть Delphi 2006

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
  protected
    procedure WMXButtonDown(var Message: TWMMouse); message WM_XBUTTONDOWN; //Нажатие X-кнопки
    procedure WMXButtonUp(var Message: TWMMouse); message WM_XBUTTONUP; // Отпускание X-кнопки
  end;

var Form1: TForm1;

implementation

{$R *.dfm}

// Проверка состояния по коду в сообщении
procedure TForm1.WMXButtonDown(var Message: TWMMouse);
begin
  CheckBox1.Checked := Lo(Message.Keys) and MK_XBUTTON1 > 0;
  CheckBox2.Checked := Lo(Message.Keys) and MK_XBUTTON2 > 0;
end;

// Проверка состояния через GetKeyState
procedure TForm1.WMXButtonUp(var Message: TWMMouse);
begin
  CheckBox1.Checked := Hi(GetKeyState(VK_XBUTTON1)) > 0;
  CheckBox2.Checked := Hi(GetKeyState(VK_XBUTTON2)) > 0;
end;
Доп инфа в MSDN: http://msdn.microsoft.com/library/default....xbuttondown.asp
PM MAIL   Вверх
dolphik
Дата 5.3.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.12.2006

Репутация: нет
Всего: нет



комбинации Alt/Ctrl/Shift эт соответсвенно нажаты ли клавиши Alt/Ctrl/Shift вовремя клика кнопками мыши....
а тут именно нуно обработать те кнопочки както...либо выловить какие события при кликах тех кнопок, но я не знаю как.

PM MAIL   Вверх
aktuba
Дата 5.3.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

но я не знаю как.


Snowy тебе уже ответил...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Snowy
Дата 5.3.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



ПыСы. Без доп софта данный код точно работает.
Стандартный мышиный софт может вешать хук на данные события, подменяя своими.
PM MAIL   Вверх
MetalFan
Дата 6.3.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



вот вам еще кучу констант, связанных с XBUTTON сообщениями.

Код

 WM_XBUTTONDOWN              = $020B;
 WM_XBUTTONUP                    = $020C;
 WM_XBUTTONDBLCLK            = $020D;
 WM_NCXBUTTONDOWN         = $00AB;
 WM_NCXBUTTONUP               = $00AC;
 WM_NCXBUTTONDBLCLK       = $00AD;


значения констант нагло сперто из Win DDK )))


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.