как определить нажатие клавишь win+left, win+right
От: ex-BK  
Дата: 21.11.11 12:05
Оценка: 1 (1)
После которых мое приложение (окно) "прилипает" к краю экрана.
Re: как определить нажатие клавишь win+left, win+right
От: ononim  
Дата: 21.11.11 15:21
Оценка:
if (GetAsyncKeyState(VK_LWIN)&32768)
Как много веселых ребят, и все делают велосипед...
Re[2]: как определить нажатие клавишь win+left, win+right
От: kero Россия  
Дата: 21.11.11 16:59
Оценка:
Здравствуйте, ononim, Вы писали:

O>if (GetAsyncKeyState(VK_LWIN)&32768)


не уловил, почему 32768, а не VK_RIGHT/LEFT ?
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[2]: как определить нажатие клавишь win+left, win+right
От: -prus-  
Дата: 21.11.11 16:59
Оценка:
Здравствуйте, ononim, Вы писали:

O>if (GetAsyncKeyState(VK_LWIN)&32768)


А не лучше ли будет ловить сообщения WM_KEYDOWN и WM_SYSKEYDOWN и там накручивать отслеживание нажатия двух нужных клавиш?
С уважением,
Евгений
Re[3]: как определить нажатие клавишь win+left, win+right
От: ononim  
Дата: 21.11.11 17:20
Оценка:
O>>if (GetAsyncKeyState(VK_LWIN)&32768)
P>А не лучше ли будет ловить сообщения WM_KEYDOWN и WM_SYSKEYDOWN и там накручивать отслеживание нажатия двух нужных клавиш?
Именно. Ловить WM_KEYDOWN и при нажатии VK_LEFT/RIGHT проверять нажатость VK_LWIN и VK_RWIN вышеприведенным кодом
Как много веселых ребят, и все делают велосипед...
Re[4]: как определить нажатие клавишь win+left, win+right
От: -prus-  
Дата: 21.11.11 17:28
Оценка:
Здравствуйте, ononim, Вы писали:

O>Именно. Ловить WM_KEYDOWN и при нажатии VK_LEFT/RIGHT проверять нажатость VK_LWIN и VK_RWIN вышеприведенным кодом


Не совсем понятно, зачем проверять через GetAsyncKeyState, если у нас уже будет в wParam virtual-key code?
С уважением,
Евгений
Re[5]: как определить нажатие клавишь win+left, win+right
От: ononim  
Дата: 21.11.11 18:19
Оценка: 3 (1)
O>>Именно. Ловить WM_KEYDOWN и при нажатии VK_LEFT/RIGHT проверять нажатость VK_LWIN и VK_RWIN вышеприведенным кодом
P>Не совсем понятно, зачем проверять через GetAsyncKeyState, если у нас уже будет в wParam virtual-key code?
Ну тогда придется запоминать состояние кнопки win гдето у себя. Зачем это делать если винда его сама запоминает? Кроме того это предотвратит "залипание" кнопки win в вашей программе в ситуации когда к примеру юзер нажал win находясь в ней а потом фокус неожиданно ушел в другую программу (юзер ткнул мышой или там к пример вылез попапчик какой назойливый), и WM_KEYUP вы не поймаете — состояние кнопки не сбросите и юзер будет неприятно удивлен реакцией вашей программы на последующие нажатия кнопок пока не додумается ткнуь и отпустить win, попутно вызвав меню Пуск — никакая юзабилити вобщем окажется. А GetAsyncKeyState будет всегда возвращать реальное положение кнопки.
Как много веселых ребят, и все делают велосипед...
Re[6]: как определить нажатие клавишь win+left, win+right
От: CEMb  
Дата: 22.11.11 02:43
Оценка:
Я думаю сабж про Win-7, и событие будет обработано системой, в окно ничего не прилетит. А если и прилетит, окно всё равно "прилипнет". Такая же история, например, с Alt+Esc. Помойму, кроме как через клавиатурный перехват это не выловить.
Re: как определить нажатие клавишь win+left, win+right
От: Centaur Россия  
Дата: 22.11.11 05:59
Оценка: +1
Здравствуйте, ex-BK, Вы писали:

EB>После которых мое приложение (окно) "прилипает" к краю экрана.


Зачем?
Re[2]: как определить нажатие клавишь win+left, win+right
От: ex-BK  
Дата: 22.11.11 06:14
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Зачем?


Хочется различать варианты:

а) размер окна изменился т.к. окно перетащили мышкой и произошел snapping.

б) размеры окна изменили "обычным" образом
Re[3]: как определить нажатие клавишь win+left, win+right
От: CEMb  
Дата: 22.11.11 07:26
Оценка:
Здравствуйте, ex-BK, Вы писали:

C>>Зачем?


EB>Хочется различать варианты:


EB>а) размер окна изменился т.к. окно перетащили мышкой и произошел snapping.


EB>б) размеры окна изменили "обычным" образом


Ну так (0x8000 & GetKeyState(VL_KWIN) || 0x8000 & GetKeyState(VK_RWIN)) помогло?

Тут ещё такой момент, для окон типа диалог (как раз вчера сдуру налетел): ловил в окне по wm_keydown кнопку VK_UP(и три других) — не ловились. Потому что стоит в обработчике IsDialogMessage(...)
Re[7]: как определить нажатие клавишь win+left, win+right
От: DarkTranquillity  
Дата: 22.11.11 10:22
Оценка: 2 (1)
Здравствуйте, CEMb, Вы писали:

CEM>Я думаю сабж про Win-7, и событие будет обработано системой, в окно ничего не прилетит. А если и прилетит, окно всё равно "прилипнет". Такая же история, например, с Alt+Esc. Помойму, кроме как через клавиатурный перехват это не выловить.


Может, Raw Input спасет "отца русской демократии"?
Re[3]: как определить нажатие клавишь win+left, win+right
От: Centaur Россия  
Дата: 23.11.11 15:09
Оценка:
Здравствуйте, ex-BK, Вы писали:

EB>Хочется различать варианты:

EB>а) размер окна изменился т.к. окно перетащили мышкой и произошел snapping.
EB>б) размеры окна изменили "обычным" образом

Зачем?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.