Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2008, 22:05   #1
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
Восклицание Охота на Tab

Проблема: как отловить keyup, keydown для VK_Tab, Vk_LEFT и др стрелок,
а так же чтобы при нажатии на них не выполнялось стандартное действие,
т. е. для Tab не переключался фокус.
Reskov вне форума Ответить с цитированием
Старый 22.12.2008, 22:32   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Компилятор какой? И вообще, что за тип программы?
MaTBeu вне форума Ответить с цитированием
Старый 22.12.2008, 22:46   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

На СИ не напишу, а вообще-то - ловим нажатие формой, анализируем, и если наша клавиша - присваиваем 0:
if key=VK_DOWN then
key:=0;
Дальше формы уже пойдет 0 для всех компонентов...
mihali4 вне форума Ответить с цитированием
Старый 22.12.2008, 22:55   #4
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

компилятор желательно builder (2007 или один из новых), но если и visual то не смертельно, дело в том что (в builder покрайней мере) событие OnKeyDown,OnKeyUp не отлавливает Tab!!!
Reskov вне форума Ответить с цитированием
Старый 22.12.2008, 23:20   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Я вам могу привести на Дельфи. Суть от этого не меняется. Я думаю, на СИ переделаете:
Код:
На уровне формы клавиша tab обычно обрабатывается Windows. В примере создается обработчик события CM_Dialog для перехвата Dialog keys. 

type
  TForm1 = class(TForm)
  private
    procedure CMDialogKey( Var msg: TCMDialogKey );
    message CM_DIALOGKEY;
end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CMDialogKey(var msg: TCMDialogKey);
begin
  if msg.Charcode <> VK_TAB then
    inherited;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_TAB then
  Form1.Caption := 'Tab Key Down!';
end;
mihali4 вне форума Ответить с цитированием
Старый 23.12.2008, 20:10   #6
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

Принцип понятен,но что такое inherited; не могу догадаться по смыслу
Reskov вне форума Ответить с цитированием
Старый 23.12.2008, 21:32   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Это - "родная" обработка, по умолчанию, так сказать.
mihali4 вне форума Ответить с цитированием
Старый 24.12.2008, 00:31   #8
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

Что то я не нашел аналогов в С++, но придумал чуть подругому Tab Down можно отловить с помощь OnHotKey, а Tab Up отлавливается стандартным KeyUp-ом Спс!!!
Reskov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход фокуса на контролах по Tab rumil Win Api 4 27.10.2012 18:46
Alt + Tab Черничный Общие вопросы Delphi 2 16.06.2008 15:38
Minimize(Alt Tab) Kostia Win Api 1 21.04.2008 13:05
alt+tab в win XP mishel Общие вопросы Delphi 5 17.07.2007 10:52