![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перехват WM_KeyDown у TApplication [D5, Win2k]
Алёшка © (2002-08-19 14:07:00)Я определил новый обработчик событий в 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;
Алёшка (2002-08-20 11:52:00) [1]Сори не выспался видадь...
if (GetAsyncKeyState(VK_RCONTROL) AND $8000)>0 then ...
Тогда ловим нажатие клавиши (LParam и WM_KEYDOWN) и одновремменно проверяем удерживает ли пользователь еще и правый ктр.
Song (2002-08-19 22:32:00) [2]LParam у WM_KEYDOWN
Алёшка (2002-08-19 19:10:00) [3]Как?
Fellomena (2002-08-19 14:17:00) [4]Просто проверяй состояние спец. клавишь во время нажатия.