Вниз
Скачать: 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
1-1108993267
Mouserx
2005-02-21 16:41
2005.03.06
Скроллинг при добавлении текста в Memo


3-1107500734
Mishenka
2005-02-04 10:05
2005.03.06
Глючит DbRichEdit


1-1109086120
Lamersss
2005-02-22 18:28
2005.03.06
Как создать????


1-1108986773
lehich
2005-02-21 14:52
2005.03.06
повторы в ListBox и сохранение элементов в переменную


1-1107954684
Lord Zmiy
2005-02-09 16:11
2005.03.06
DLL порядок выполнения




   Наверх