?? directinput.cpp
字號:
//=============================================================================
// DirectInput.cpp by Frank Luna (C) 2005 All Rights Reserved.
//=============================================================================
#include "d3dUtil.h"
#include "DirectInput.h"
#include "d3dApp.h"
DirectInput* gDInput = 0;
DirectInput::DirectInput(DWORD keyboardCoopFlags, DWORD mouseCoopFlags)
{
ZeroMemory(mKeyboardState, sizeof(mKeyboardState));
ZeroMemory(&mMouseState, sizeof(mMouseState));
HR(DirectInput8Create(gd3dApp->getAppInst(), DIRECTINPUT_VERSION,
IID_IDirectInput8, (void**)&mDInput, 0));
HR(mDInput->CreateDevice(GUID_SysKeyboard, &mKeyboard, 0));
HR(mKeyboard->SetDataFormat(&c_dfDIKeyboard));
HR(mKeyboard->SetCooperativeLevel(gd3dApp->getMainWnd(), keyboardCoopFlags));
HR(mKeyboard->Acquire());
HR(mDInput->CreateDevice(GUID_SysMouse, &mMouse, 0));
HR(mMouse->SetDataFormat(&c_dfDIMouse2));
HR(mMouse->SetCooperativeLevel(gd3dApp->getMainWnd(), mouseCoopFlags));
HR(mMouse->Acquire());
}
DirectInput::~DirectInput()
{
ReleaseCOM(mDInput);
mKeyboard->Unacquire();
mMouse->Unacquire();
ReleaseCOM(mKeyboard);
ReleaseCOM(mMouse);
}
void DirectInput::poll()
{
// Poll keyboard.
HRESULT hr = mKeyboard->GetDeviceState(sizeof(mKeyboardState), (void**)&mKeyboardState);
if( FAILED(hr) )
{
// Keyboard lost, zero out keyboard data structure.
ZeroMemory(mKeyboardState, sizeof(mKeyboardState));
// Try to acquire for next time we poll.
hr = mKeyboard->Acquire();
}
// Poll mouse.
hr = mMouse->GetDeviceState(sizeof(DIMOUSESTATE2), (void**)&mMouseState);
if( FAILED(hr) )
{
// Mouse lost, zero out mouse data structure.
ZeroMemory(&mMouseState, sizeof(mMouseState));
// Try to acquire for next time we poll.
hr = mMouse->Acquire();
}
}
bool DirectInput::keyDown(char key)
{
return (mKeyboardState[key] & 0x80) != 0;
}
bool DirectInput::mouseButtonDown(int button)
{
return (mMouseState.rgbButtons[button] & 0x80) != 0;
}
float DirectInput::mouseDX()
{
return (float)mMouseState.lX;
}
float DirectInput::mouseDY()
{
return (float)mMouseState.lY;
}
float DirectInput::mouseDZ()
{
return (float)mMouseState.lZ;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -