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
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
Я думаю сабж про Win-7, и событие будет обработано системой, в окно ничего не прилетит. А если и прилетит, окно всё равно "прилипнет". Такая же история, например, с Alt+Esc. Помойму, кроме как через клавиатурный перехват это не выловить.
Re: как определить нажатие клавишь win+left, win+right
Здравствуйте, 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
Здравствуйте, CEMb, Вы писали:
CEM>Я думаю сабж про Win-7, и событие будет обработано системой, в окно ничего не прилетит. А если и прилетит, окно всё равно "прилипнет". Такая же история, например, с Alt+Esc. Помойму, кроме как через клавиатурный перехват это не выловить.
Может, Raw Input спасет "отца русской демократии"?
Re[3]: как определить нажатие клавишь win+left, win+right
Здравствуйте, ex-BK, Вы писали:
EB>Хочется различать варианты: EB>а) размер окна изменился т.к. окно перетащили мышкой и произошел snapping. EB>б) размеры окна изменили "обычным" образом