Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

WM_KEYDOWN = Shift + Tab?   Найти похожие ветки 

 
tradakad ©   (2005-01-19 14:46) [0]

имеется EditBox c назначенной процедурой обработки событий

 pr_Conf:=Pointer(GetWindowLong(hMsgEditConf,GWL_WNDPROC));
 SetWindowLong(hMsgEditConf,GWL_WNDPROC,Longint(@ConfProc));

function ConfProc(hwnd,msg,wparam,lParam:longint):longint;stdcall;
begin
 Result:=CallWindowProc(pr_Conf,hWnd,Msg,wParam,lParam);
 case Msg of
   WM_KEYDOWN : if wparam=9 then SetFocus(hMsgBtn);
 end;
end;

т.е. если нажата клавиша Tab - делаем то -то. а как проверить нажата ли Tab просто или с Shift?


 
Игорь Шевченко ©   (2005-01-19 14:52) [1]

GetKeyState ?


 
tradakad ©   (2005-01-19 15:02) [2]

да пробую
 case Msg of
   WM_KEYDOWN :
   case wparam of
     9:
       begin
         if (GetKeyState(VK_RSHIFT)=1) or (GetKeyState(VK_LSHIFT)=1) then
         SetFocus(hMsgBtn) else
         SetFocus(hMsgEditConf);
       end;
но не работает ...


 
Игорь Шевченко ©   (2005-01-19 15:15) [3]

А разве WM_KEYDOWN с кодом 9 приходит EditBox"у, а не родительскому окну ?

В любом случае (GetKeyState (VK_SHIFT) and $8000) <> 0 - клавиша нажата.


 
tradakad ©   (2005-01-19 15:25) [4]

да. так работает. одно действие если при нажатом Tab нажат Shift и другое если не нажат. я пробовал так
if (GetKeyState(VK_LSHIFT)<>1) or (GetKeyState(VK_RSHIFT)<>1) then SetFocus(hMsgEditPass) else SetFocus(hMsgBtn);
происходит каша. т.е. shift работает как caps lock,т.е. нажал шифт, отпустил - выполняется все как при нажатом, еще раз нажал , отпусти - выполняется как при ненажатом.. почему?


 
Игорь Шевченко ©   (2005-01-19 15:32) [5]

(GetKeyState (VK_SHIFT) and $8000) <> 0 - клавиша нажата


 
tradakad ©   (2005-01-19 15:45) [6]

Спасибо! но WM_KEYDOWN приходит EditBoxу потому что
 pr_BtnClick:=Pointer(GetWindowLong(hMsgBtn,GWL_WNDPROC));
 SetWindowLong(hMsgBtn,GWL_WNDPROC,Longint(@BtnProc));



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

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
6-1104411289
Sveta_cc
2004-12-30 15:54
2005.03.06
Server Socket ClientSocket


14-1108299529
dmk
2005-02-13 15:58
2005.03.06
Присяжный заседатель


3-1107877128
alsov
2005-02-08 18:38
2005.03.06
Помогите поставить клиента Oracle 10


3-1107253279
Vadim
2005-02-01 13:21
2005.03.06
Запрос с параметрами


1-1108834889
Aldor
2005-02-19 20:41
2005.03.06
Многомерные open array parameters