Q&A

  • 키가 눌리고 있는중에 다른키 입력을 아는법은?
3 번째 올립니다.



결국 그냥 key down 이나 key press 에서는 해결을 할수 없는것 같은데...

그래도 혹시나 방법이 있을까 해서 마지막으로 올립니다.

일부 워드 프로세서를 보면 키가 눌리고 있는 상태에서 다른 키를 누르면

이 다른키가 적용이 되더군요.

여기서는 어떤키가 눌리고 있어도 다른키가 눌렸다는 것을 감지 한다는 뜻인데

여기서 조금더(?) 발전을 하면 원하는 결과를 얻을것 같습니다.



게임 이라면 움직이는 키가 눌려있고.(이것을 프로그램이 감지하고 있고.)

총알을 발사하는 키를 누른경우.(이것을 감지하는 것은 워드처럼(?)하면)

그리고 총알을 모아서 쏜다면?(이경우는 둘다 눌리고 있는것을 알아야..)



이것을 감지 하려면 역시 api를 알거나

window 메세지를 가로채야 하는 것일까요?



결국 수시로 키보드를 체크하는 루틴이 필요할것 같습니다.

단순히 키보드 버퍼를 읽고 쓰고 하는것이 아니고요.

근데 이런게 가능하긴 한건지요?

아니면 제가 방향을 잘못 잡고 있는 것인지요?



밑에 답변에 보면 key down 등에서 해결된다고 하신분도 있는데..

정말 방법이 있다면 정말 좋겠습니다.

아 그리고..키가 계속 눌리고 있을때.. 리피트 된다고 하나요?

이것에 간격을 조절할수 있는것으로 아는데 어떻게 해야 하는지요?







1  COMMENTS
  • Profile
    이정욱 1999.05.27 20:15
    GetASyncKeyState를 사용하시면 됩니다.

    생각하신데로 루프를 돌면서 계속 검사를 하고 있는것입니다.

    저번 '비트 매니아'류의 게임을 델파이로 만들면서 제가 사용했던 방법입니다.

    아래에 일부분을 올릴께요.참고하세요.

    동시에 몇가지가 눌려있어도 잘 됩니다.



    폼의 OnShow이벤트에서...



    repeat

    UpdateFrame; //그림을 그려주는곳

    If GetAsyncKeyState(ord('Z')) < 0 then

    begin

    If not Key1Down then

    begin

    Key1Down := True;

    여러가지 처리

    end else Key1Down := False;



    If GetAsyncKeyState(ord('S')) < 0 then

    begin

    If not Key2Down then

    begin

    Key2Down := True;

    여러가지 처리

    end;

    end else Key2Down := False;



    If GetAsyncKeyState(ord('X')) < 0 then

    begin

    If not Key3Down then

    begin

    Key3Down := True;

    여러가지 처리

    end;

    end else Key3Down := False;



    If GetAsyncKeyState(ord('D')) < 0 then

    begin

    If not Key4Down then

    begin

    Key4Down := True;

    여러가지 처리

    end;

    end else Key4Down := False;



    Until (GetAsyncKeyState(VK_ESCAPE) < 0);



    박훈철 께서 말씀하시기를...

    > 3 번째 올립니다.

    >

    > 결국 그냥 key down 이나 key press 에서는 해결을 할수 없는것 같은데...

    > 그래도 혹시나 방법이 있을까 해서 마지막으로 올립니다.

    > 일부 워드 프로세서를 보면 키가 눌리고 있는 상태에서 다른 키를 누르면

    > 이 다른키가 적용이 되더군요.

    > 여기서는 어떤키가 눌리고 있어도 다른키가 눌렸다는 것을 감지 한다는 뜻인데

    > 여기서 조금더(?) 발전을 하면 원하는 결과를 얻을것 같습니다.

    >

    > 게임 이라면 움직이는 키가 눌려있고.(이것을 프로그램이 감지하고 있고.)

    > 총알을 발사하는 키를 누른경우.(이것을 감지하는 것은 워드처럼(?)하면)

    > 그리고 총알을 모아서 쏜다면?(이경우는 둘다 눌리고 있는것을 알아야..)

    >

    > 이것을 감지 하려면 역시 api를 알거나

    > window 메세지를 가로채야 하는 것일까요?

    >

    > 결국 수시로 키보드를 체크하는 루틴이 필요할것 같습니다.

    > 단순히 키보드 버퍼를 읽고 쓰고 하는것이 아니고요.

    > 근데 이런게 가능하긴 한건지요?

    > 아니면 제가 방향을 잘못 잡고 있는 것인지요?

    >

    > 밑에 답변에 보면 key down 등에서 해결된다고 하신분도 있는데..

    > 정말 방법이 있다면 정말 좋겠습니다.

    > 아 그리고..키가 계속 눌리고 있을때.. 리피트 된다고 하나요?

    > 이것에 간격을 조절할수 있는것으로 아는데 어떻게 해야 하는지요?

    >

    >

    >





    • 지니
    • 1999.05.27 20:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.27 21:33
      지니 께서 말씀하시기를... > > 간단한 메모장을 만들어 보고 있습니다. > RichEdit콘트롤을 사용하여 ...
    • 황하성
    • 1999.05.27 20:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.27 20:51
      황하성 께서 말씀하시기를... > > MessageDlg에서 버튼 입력을 받아서 다음 과정으로 넘어가고 싶은데 ...
    • 박훈철
    • 1999.05.27 18:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.27 20:15
      GetASyncKeyState를 사용하시면 됩니다. 생각하신데로 루프를 돌면서 계속 검사를 하고 있는것입니다. 저...
    • 송기원
    • 1999.05.27 18:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.27 23:43
      송기원 께서 말씀하시기를... > Cached Update를 이용하여 자료를 저장시에 오류가 발생하면 > TQuery의 ...
    • Vincent
    • 1999.05.27 08:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.27 08:39
      Vincent 께서 말씀하시기를... > 급하게 음력생일을 양력생일로 변환하는 로직을 찾습니다. > 통합 델파...
    • 이정욱
      1999.05.27 10:46
      > 스트링 그리드에 관한것 인데요. > 스트링 그리드에서 특정셀로 포커스를 이동할 수 있는지 궁금합니다....
    • chbang
    • 1999.05.27 06:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.27 21:56
      음....sql의 구문에러 인듯 합니다. showmessage(query1.sql.lines.text); delphi30으로 oracle db와 con...
    • 조진희
    • 1999.05.27 04:26
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 하윤철
      1999.05.27 05:54
      조진희 wrote: > 파락독스 db를 사용하고 있구요.. > 미혼인 경우에는 결혼기념일을 비활성해서 데이터를...
    • Heaven
      1999.05.27 05:54
      조진희 wrote: > 파락독스 db를 사용하고 있구요.. > 미혼인 경우에는 결혼기념일을 비활성해서 데이터를...
    • 글쎄요.
      1999.05.27 04:38
      조진희 wrote: > 파락독스 db를 사용하고 있구요.. > 미혼인 경우에는 결혼기념일을 비활성해서 데이터를...
    • 송기원
    • 1999.05.27 03:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.27 10:48
      델4에서는 Tools메뉴에서 Debugger Options 에 맨 밑에 있는 Integrated Debugging 을 켜주세요. 델3에...
    • 왕초
    • 1999.05.27 03:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.27 10:51
      쩝.. 저희 나이렉스의 고객지원 담당자분의 답변이 아니구 이곳의 방문자분께서 해주신 것입니다. 이곳에서...
    • 박훈철
    • 1999.05.27 02:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.27 07:10
      박훈철 께서 말씀하시기를... > 간단하게 게임을 제작하는 경우라고 생각해 봅시다. > > 먼저 움직이는...
    • 안치봉
      1999.05.27 06:56
      박훈철 께서 말씀하시기를... > 간단하게 게임을 제작하는 경우라고 생각해 봅시다. > > 먼저 움직이는...
    • 왕초
    • 1999.05.27 01:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.27 03:00
      왕초 wrote: > Regsvr32 로 cfx32.ocx 를 등록시에 failed가 나옵니다.. > win95문제인지 Regsvr32, cfx3...
    • 윤상원
    • 1999.05.26 22:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.27 21:27
      윤상원 께서 말씀하시기를... > 안녕하세요? > 처음으로 게시판을 이용하는것 같습니다. > 책한권과 통...
    • 1999.05.27 01:17
      윤상원 wrote: > 안녕하세요? > 처음으로 게시판을 이용하는것 같습니다. > 책한권과 통신에 올라온 Q&A...
    • chbang
    • 1999.05.26 22:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.05.27 01:44
      chbang wrote: > StringGrid에서 > 현재 선택되어진 cell 이나 row를 > 알수 있는 방법을 알고 싶습니...
    • 박훈철
    • 1999.05.26 21:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.05.27 02:42
      박훈철 wrote: > 기능키가 아닌 일반 키를 두가지를 동시에 두를때 > 혹은 두가지 이상을 누를때 그 키를...
    • 이현신
    • 1999.05.26 21:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.05.27 01:41
      이현신 wrote: > 델파이에서 보면 smtp 콤포넌트에서 메일서버를 꼭지정해야 > 하더군요.. > 공개메일 ...
    • july
    • 1999.05.26 19:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • redhead
      1999.05.26 22:29
      july wrote: > 이렇게 계속 질문만 하게 되네요.... > > 다름이 아니오라, 2개의 날짜가 있어서 그 사...