1.일단 프로젝트에 필요 lib 넣는다.
프로젝트속성->입력->추가 종속성->Dinput8.lib dxguid.lib
하나라도 빠지면 제대로 안된다.
2.#include <dinput.h> 한다.
3.#define KEYDOWN(name,key) (name[key] & 0x80) 선언한다.
4.객체는 두개가 필요하다
LPDIRECTINPUT8 g_lpdi = NULL;
LPDIRECTINPUTDEVICE8 m_keyboard;
생성자나 어플 초기화 함수에서
DirectInput8Create( GetModuleHandle(NULL), DIRECTINPUT_VERSION,
IID_IDirectInput8, (VOID**)&g_lpdi, NULL ) ;
g_lpdi->CreateDevice(GUID_SysKeyboard, &m_keyboard, NULL);
m_keyboard->SetDataFormat(&c_dfDIKeyboard);
m_keyboard->Acquire();//이거 안해주면 키 눌린듯한 상태가 된다.
초기화 시켜준다.
5.키이벤트 처리를 위한 메소드 (예)
void MoveChar()
{
char buffer[256];
m_keyboard->GetDeviceState(sizeof(buffer), (LPVOID)buffer);
if(KEYDOWN(buffer, DIK_LEFT))
{
charX-=1;
}
else if(KEYDOWN(buffer, DIK_RIGHT))
{
charX+=1;
}
else if(KEYDOWN(buffer, DIK_UP))
{
charY-=1;
}
else if( KEYDOWN(buffer, DIK_DOWN))
{
charY+=1;
}
}
뭐 대략 이런식으로 해준다.
이것으로 키이벤트도 대략 된건가 흠
크흐흐 신기하면서 재밌군 케릭터 요리조리 움직인다눼~
마음 급해서 이것저것 하려하지말고 계획했던거 대로 차근 차근 합시다.