-
directx10 user input
hi, this is my first post in these forums, im also quite new to programming so dont hate please :) just looking for some help with my direct x code that im trying to sort out. i am attempting to get user input working for the keyboard within my program the only problem im having at the moment is the error
Unhandled exception at 0x01372146 in GameEng_Main.exe: 0xC0000005: Access violation reading location 0x00000000.
which is then taking me to the line of
Code:
result = m_directInput->CreateDevice(GUID_SysKeyboard, &m_keyboard, NULL);
the code for the actual project is:
Code:
#include "UserInput.h"
InputClass::InputClass()
{
m_directInput = 0;
m_keyboard = 0;
}
InputClass::InputClass(const InputClass& other)
{
}
InputClass::~InputClass()
{
}
bool InputClass::Initialize(HINSTANCE hinstance, HWND hwnd)
{
HRESULT result;
//initialise the input interface
result = DirectInput8Create(hinstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&m_directInput, NULL);
if(!result)
{
return false;
}
//create the device for the keyboard input
result = m_directInput->CreateDevice(GUID_SysKeyboard, &m_keyboard, NULL);
if(!result)
{
return false;
}
//set the data format - because its the keyboard can set to predefined data format
result = m_keyboard->SetDataFormat(&c_dfDIKeyboard);
if(!result)
{
return false;
}
//set the cooperative level for the keyboard so it doesnt comunicate with anything else
result = m_keyboard->SetCooperativeLevel(hwnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE);
if(!result)
{
return false;
}
// Now acquire the keyboard.
result = m_keyboard->Acquire();
if(!result)
{
return false;
}
}
void InputClass::Shutdown()
{
//release the keyboard
if(m_keyboard)
{
m_keyboard->Unacquire();
m_keyboard->Release();
m_keyboard = 0;
}
//release the main interface
if(m_directInput)
{
m_directInput->Release();
m_directInput = 0;
}
return;
}
bool InputClass::Frame()
{
bool result;
//read the state of the keyboard
result = ReadKeyboard();
if(!result)
{
return false;
}
//ProcessInput();
return true;
}
bool InputClass::ReadKeyboard()
{
HRESULT result;
// Read the keyboard device.
result = m_keyboard->GetDeviceState(sizeof(m_keyboardState), (LPVOID)&m_keyboardState);
if(FAILED(result))
{
// If the keyboard lost focus or was not acquired then try to get control back.
if((result == DIERR_INPUTLOST) || (result == DIERR_NOTACQUIRED))
{
m_keyboard->Acquire();
}
else
{
return false;
}
}
return true;
}
bool InputClass::IsEscapePressed()
{
// Do a bitwise and on the keyboard state to check if the escape key is currently being pressed.
if(m_keyboardState[DIK_ESCAPE] & 0x80)
{
return true;
}
return false;
}
-
Re: directx10 user input
Sounds like you're trying to make a keylogger, which is a subject we usually do not discuss here.
-
Re: directx10 user input
noo, not at all. just trying to get user input working for a game. but it doesnt like m_keyboard.
but i have now gone to trying to use raw input but its coming up with 0xccccccc <Bad Ptr> for the line
Code:
BYTE *buffer = new BYTE[buffersize];
tried looking around for reasons why but i cant find any