Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.038 c
1-1109016306
Wonderer
2005-02-21 23:05
2005.03.06
Товарищ Панов! Это что, не тема сообщения?


14-1108572820
Kerk
2005-02-16 19:53
2005.03.06
Анимация текста в Word


1-1108944752
Bes
2005-02-21 03:12
2005.03.06
Зависание TThreadList


3-1107773072
Nick_ck
2005-02-07 13:44
2005.03.06
упаковать DBF через ADO


14-1108470129
sapsi
2005-02-15 15:22
2005.03.06
Работа в ИТ отделах нефтяных компаний





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский