DX라이브러리2014. 12. 19. 18:26

1.5 특정 키 입력상태를 감지


CheckHitKey 함수 레퍼런스 (주 : 일본어)


선언 

 int CheckHitKey( int KeyCode ); 

기능

 특정 키 입력을 받는다.

인수

 KeyCode : 입력상태를 확인할 키의 키코드

반환값 

 1 - 입력됐다.

 0 - 입력 안됐다.


사용 예)

while( 1 ){

  if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 ){

    break;

  }

}

*ESC의 키코드 : KEY_INPUT_ESCAPE

*ESC를 입력하였을 때 while 반복분을 중단



=-=-=- 

예제)

#include <DxLib.h>


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){

        ChangeWindowMode( TRUE ); // 윈도우모드

        DxLib_Init();   // DX라이브러리 초기화


        int Handle;

        Handle = LoadGraph( "image/character_00.png" );

        DrawGraph( 50, 100, Handle, TRUE );


        while( 1 ){

                if( CheckHitKey(KEY_INPUT_ESCAPE) == 1 ){

                        break;

                }

        }

        

        DxLib_End() ;   // DX라이브러리 종료

        return 0 ;

}


제대로 동작하는 경우도 있지만 대부분은 화면이 멈추거나 응답없음오류가 발생할 것이다.

이때에는 ProcessMessage 함수를 추가해준다.

이 함수는 특히 특정 부분을 루푸하는 문장에 사용하게 될 것이다.


수정 예)

#include <DxLib.h>


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){

        ChangeWindowMode( TRUE ); // 윈도우모드

        DxLib_Init();   // DX라이브러리 초기화


        int Handle;

        Handle = LoadGraph( "image/character_00.png" );

        DrawGraph( 50, 100, Handle, TRUE );


        while( 1 ){

                ProcessMessage();  //추가된 함수

                if( CheckHitKey(KEY_INPUT_ESCAPE) == 1 ){

                        break;

                }

        }

        

        DxLib_End() ;   // DX라이브러리 종료

        return 0 ;

}


실행결과



ESC키를 통해 프로그램의 종료가 가능하다.



이 외에 윈도우의 x버튼을 클릭했을 때 프로그램을 종료시키는 예제는 다음과 같다.

#include <DxLib.h>


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){

        ChangeWindowMode( TRUE ); // 윈도우모드

        DxLib_Init();   // DX라이브러리 초기화


        int Handle;

        Handle = LoadGraph( "image/character_00.png" );

        DrawGraph( 50, 100, Handle, TRUE );


        while( 1 ){

                if( ProcessMessage() != 0 ){

                        break;

                }

        }

        

        DxLib_End() ;   // DX라이브러리 종료

        return 0 ;



Posted by 캡슐리어