![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как
Prok12 © (2002-09-23 15:55:00)1) Нужно определить, нажата ли в данный момент клавиша (например,
GetKeyState(vk_Shift) или GetKeyState(vk_Control)).
В справке по функции GetKeyState сказано:
If the high-order bit is 1, the key is down ...
Как взять этот самый high-order bit из числа типа ShortInt?
И смежный вопрос.
2) При обработке сообщения wm_LButtonDblClk обнаружил, что вопреки сказанному в Help, wParam этого сообщения не даёт возможность определить, какая клавиша клавиатуры (например, mk_Shift или mk_Control) была нажата при двойном щелчке мышкой - wParam НЕМНОГО отличается от указанных констант! Возможно, это ошибка в Delphi... Попробуйте!
Поэтому и возник первый вопрос.
Юрий Зотов (2002-09-27 00:36:00) [1]Это же знаковый бит.
if GetState(vk_Control) < 0 then ... //нажато
Набережных С. (2002-09-23 20:09:00) [2]А какого типа ММ? Поди ShortInt? И "в итоге", если на пальцах посчитать, д.б. -32768, а не 1.
Termik (2002-09-23 16:46:00) [3]Сначала попробуй в режиме отладки погонять, посмотреть, какое значение принимает MM. Советы насчет high-order bit абсолютно верные.
Prok12 (2002-09-23 16:41:00) [4]Попробовал (при нажатых клавишах либо Control, либо Shift) ввести в обработчик события "двойной щелчок":
MM := GetKeyState(vk_Control) and $8000;
ShowMessage(IntToStr(MM));
MM := GetKeyState(vk_Shift) and $8000;
ShowMessage(IntToStr(MM));
В итоге - получаю всегда нолик, а не 1 !!!
MBo (2002-09-23 16:01:00) [5]Как взять этот самый high-order bit
c помощью
число And $8000
Anatoly Podgoretsky (2002-09-23 16:01:00) [6]1) and $8000