Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Вниз

Перехват WM_KeyDown у TApplication   Найти похожие ветки 

 
Алёшка   (2002-08-19 14:07) [0]

Я определил новый обработчик событий в TApplication - ловлю сообщение WM_KeyDown. Приходит код только последней нажатой клавиши , а вот если одновременно жались Shift или Ctr!
Например Ctr+A получаю A. Как можно узнать нажата ли в это время клавиша Shift или Ctrl?

Можно, конкчно, ловить єти клавиши и сохранять в какой-то переменной, а потом сравнивать ее содержимое. Но видь єто как-то не красиво. Нельзя ли с TMsg вытянуть инфу о одновременно нажатых клавишах?

type
TForm1 = class(TForm)
.
procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
.
private
{ Private declarations }
public
{ Public declarations }
end;

procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_KeyDown then
begin
if Msg.lParam = ... then
begin
...
Handled := True;
end
else Handled := false;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := AppMessage;
end;


 
Fellomena   (2002-08-19 14:17) [1]

Просто проверяй состояние спец. клавишь во время нажатия.


 
Алёшка   (2002-08-19 19:10) [2]

Как?


 
Song   (2002-08-19 22:32) [3]

LParam у WM_KEYDOWN


 
Алёшка   (2002-08-20 11:52) [4]

Сори не выспался видадь...
if (GetAsyncKeyState(VK_RCONTROL) AND $8000)>0 then ...

Тогда ловим нажатие клавиши (LParam и WM_KEYDOWN) и одновремменно проверяем удерживает ли пользователь еще и правый ктр.




Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
1-21067
Metotrone
2002-09-24 17:59
2002.10.07
Массивы строк


3-20935
KIR
2002-09-18 02:22
2002.10.07
Что это за файлы создает Paradox: _QSQ12.DB(MB)


14-21215
T2
2002-09-11 15:45
2002.10.07
To AL2002


6-21161
Keray
2002-08-06 11:30
2002.10.07
Организация TCP/IP по модемному соединению


1-21151
Ramzes
2002-09-26 07:52
2002.10.07
Открытие новой формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский