Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
14-1108112967
yanval
2005-02-11 12:09
2005.03.06
Шиза в интернете (более модератору)


1-1108563260
Zilog
2005-02-16 17:14
2005.03.06
Как корректно уничтожить объект изнутри


14-1107966063
Nic87
2005-02-09 19:21
2005.03.06
Новый дизайн сайта. Нужна конструктивная критика.


3-1107334339
Rostislav Rotaru
2005-02-02 11:52
2005.03.06
Помогите написать сложную для меня процедуру или функцию


1-1108815635
TUser
2005-02-19 15:20
2005.03.06
Быстрая сортировка




   Наверх