{{notification.text}}

MirGames

13.02.07 22:06
0
вот вопрос как использовать клавиатуру???
ну знаю я что там 256(255) кнопок ну и что мне это даёт расскажите объясните
#1
13.02.07 22:19
0
WM_KEYDOWN - если именно для WinAPI надо
смотри мануал по этому слову (MSDN например)
#2
Limited Edition
13.02.07 22:21
0
где 256? на клавиатуре??? а если пересчитать?) массив в 256 элементов логического типа используется для определения нажатых клавиш.
Отредактировано: 01.07.08 22:03
#3
13.02.07 22:23
0
а выбрать именную кнопку как???
#4
Limited Edition
13.02.07 22:27
0
какую такую именную?) с собственным именем чтоли? гг)
система сама посылает тебе номера нажатых клавишь, смотри примеры Хорна
Отредактировано: 13.02.07 22:28
#5
13.02.07 23:28
0
что то будет происходить если нажата клавиша "Ц"???ккак мнеэто сделать
#6
14.02.07 01:23
0
Anatolyи всё т аки посмотри правила форума!!!
значит люди повторяю вопрос
как мне понажатию клавиши сделать процедуру А
а понажатию другой клавиши сделать процедуру Б
#7
14.02.07 01:29
0
ну я тебе вроде сразу сказал - сообщение WM_KEYDOWN обрабатывай.
если под VCL - дык вообще есть OnKeyDown/OnKeyPress события.
подробнее - см. Help в Delphi или MSDN.

или ты хочешь чтобы за тебя другие все писали? ;)
#8
14.02.07 01:49
0
нет
а что после вм_кейдаун
как мне просчитывать нуную клавишу
#9
14.02.07 02:42
0
Тебеж сказали, смотри примеры Хорна
#10
mov, просто mov
15.02.07 00:17
0
Код

case Message of
  WM_KEYDOWN:
    case wParam of
      VK_XXX:
       ;
    end;
  WM_CHAR
    case Char(wParam) of
      'ц':  
       ;
    end;
end;
#11
15.02.07 01:18
0
MegaI2
спсибо!!!
#12
mov, просто mov
16.02.07 00:25
0
тока такой способ не реализует нажатие 2-х клавиш сразу ;)
#13
16.02.07 14:45
0
Цитата(MegaI2 @ 15.02.2007 - 20:25) [snapback]49536[/snapback]
тока такой способ не реализует нажатие 2-х клавиш сразу ;)

почему это?
2 нажатия - 2 сообщения.
или ты о чем?
#14
16.02.07 19:51
0
Anatoly,
в приведенной реализации так оно и есть :)

Каждое сообщение обрабатывается сразу, т.е. не записывается в буфер, а значит определить одновременность нажатия затруднительно.
#15
16.02.07 20:04
0
visual ну во-первых, одновременно по меркам компа нажать 2 клавиши ни один человек не сможет ;)
а во-вторых - а флаги на что?
я так понимаю речь не о том чтоб нажали сразу две и обе отпустили - а удерживались или обе или одна из них - так?
дык элементарно - по WM_KEYDOWN ставим флаг, по WM_KEYUP сбрасываем, в обработке кнопок смотрим какие флаги стоят - и хоть 10 кнопок одновременно нажать можно :)
#16
16.02.07 20:12
0
Код
var
   Keys : array[0..255] of boolean;

case Message of
  WM_KEYDOWN: Keys[wParam] := true;
  WM_KEYUP : Keys[wParam] := false;

  WM_CHAR
    case Char(wParam) of
      'ц':  
      ;
    end;
end;
//*************************************
procedure InitEngine;
begin
. . .
  ZeroMemory(Keys, 256);
. . .
end;
//-------------------------------------
procedure UodateEngine;
begin
. . .
  if Keys[VK_SPACE] and Keys[VK_UP] then БЛА-БЛА-БЛА
. . .
end;
//-------------------------------------


А вообще, далеко не все клавиши определены константами VK_ ; в аттаче берите KodKey --- утилиту, которую я написал когда был самым самым новичком; я до сих пор считаю её одной из самых гениальных программ (я серьёзно!).
#17
17.02.07 00:06
0
ПИПЛЫ вопрос а если мене надо по кнопке ц сделать процедуру то вот так будет
case Message of
WM_KEYDOWN:
case wParam of
char('ц'): ;
end;
end;
#18
17.02.07 00:10
0
Anatoly
Ты меня не понял :)

lans
Твой код не имеет смысла :)

Код

case Message of
  WM_KEYDOWN:
    case chr(wParam) of
      'ц': doSomeThing;
    end;
end;
#19
17.02.07 02:12
0
visual
я спрашиваю правильно ли вообще код
ну короче у тебя правильно
#20
17.02.07 02:38
0
Цитата
я спрашиваю правильно ли вообще код


Твой код не должен компилироваться. (Если переменная wParam не типа char). Еще запись 'ц' для компилятора равносильна char('ц').
Отредактировано: 17.02.07 02:39
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}