Вниз
Скачать: 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.023 c
14-1108032784
Игорь Шевченко
2005-02-10 13:53
2005.03.06
Microsoft готовится к реформе календаря ?


14-1108369076
olookin
2005-02-14 11:17
2005.03.06
Пожалуйста, посоветуйте наушники...


14-1108111774
Drakosha
2005-02-11 11:49
2005.03.06
Подскажите книги и авторов.


14-1108508124
GanibalLector
2005-02-16 01:55
2005.03.06
Дайджесты форумов


1-1108741402
hgd
2005-02-18 18:43
2005.03.06
Как получить содерждимое поверхности компонента




   Наверх