#include "GameEngine_Input.h"
GameEngine_Input::GameEngine_Input(void)
{
m_pKeyBoardDevice=NULL;
m_lMouseMoveX=0;
m_lMouseMoveY=0;
}
GameEngine_Input::~GameEngine_Input(void)
{
InputRelease();
}
bool GameEngine_Input::ReadMouse()
{
DWORD dwReadNum=1;
int i;
ZeroMemory(m_MouseData,sizeof(DIDEVICEOBJECTDATA)*ITEMS_NUM);
for (i=0;i<ITEMS_NUM;i++)
{
if (DIERR_INPUTLOST==m_pMouseDevice->GetDeviceData(sizeof(DIDEVICEOBJECTDATA),&m_MouseData[i],&dwReadNum,0))
{
m_pMouseDevice->Acquire();
if (FAILED(m_pMouseDevice->GetDeviceData(sizeof(DIDEVICEOBJECTDATA),&m_MouseData[i],&dwReadNum,0)))
{
return false;
}
}
if (m_MouseData[i].dwOfs==DIMOFS_X)
{
m_lMouseMoveX+=m_MouseData[i].dwData;
}
if (m_MouseData[i].dwOfs==DIMOFS_Y)
{
m_lMouseMoveY+=m_MouseData[i].dwData;
}
}
return true;
}
bool GameEngine_Input::LButtonDown()
{
for (int i=0;i<ITEMS_NUM;i++)
{
if ((m_MouseData[i].dwOfs==DIMOFS_BUTTON0)&&(m_MouseData[i].dwData & 0x80))
{
return true;
}
}
return false;
}
bool GameEngine_Input::RButtonDown()
{
for (int i=0;i<ITEMS_NUM;i++)
{
if ((m_MouseData[i].dwOfs==DIMOFS_BUTTON1)&&(m_MouseData[i].dwData & 0x80))
{
return true;
}
}
return false;
}
bool GameEngine_Input::MButtonDown()
{
for (int i=0;i<ITEMS_NUM;i++)
{
if ((m_MouseData[i].dwOfs==DIMOFS_BUTTON2)&&(m_MouseData[i].dwData & 0x80))
{
return true;
}
}
return false;
}
bool GameEngine_Input::CreateDirectInput( HINSTANCE hInst)
{
if (FAILED(DirectInput8Create(hInst,DIRECTINPUT_VERSION,IID_IDirectInput8W,(void **)&m_pIDirectInput,NULL)))
{
MessageBox(NULL,L"建立DirectX接口对象失败",L"警告",MB_OK|MB_ICONINFORMATION);
return false;
}
return true;
}
bool GameEngine_Input::CreateKeyBoard( HWND hWnd)
{
if (FAILED(m_pIDirectInput->CreateDevice(GUID_SysKeyboard,&m_pKeyBoardDevice,NULL)))
{
MessageBox(NULL,L"建立键盘输入对象失败",L"警告",MB_OK|MB_ICONINFORMATION);
return false;
}
if (FAILED(m_pKeyBoardDevice->SetDataFormat(&c_dfDIKeyboard)))
{
MessageBox(NULL,L"设置键盘读取格式失败",L"警告",MB_OK|MB_ICONINFORMATION);
InputRelease();
return false;
}
if (FAILED(m_pKeyBoardDevice->SetCooperativeLevel(hWnd,DISCL_BACKGROUND|DISCL_NONEXCLUSIVE)))
{
MessageBox(NULL,L"建立键盘协调级别失败",L"警告",MB_OK|MB_ICONINFORMATION);
InputRelease();
return false;
}
if (FAILED(m_pKeyBoardDevice->Acquire()))
{
MessageBox(NULL,L"取得键盘访问权失败",L"警告",MB_OK|MB_ICONINFORMATION);
InputRelease();
return false;
}
ZeroMemory(KeyBuffer,sizeof(char)*256);
return true;
}
bool GameEngine_Input::CreateMouse( HWND hwnd)
{
if (FAILED(m_pIDirectInput->CreateDevice(GUID_SysMouse,&m_pMouseDevice,NULL)))
{
MessageBox(NULL,L"建立鼠标设备失败",L"警告",MB_OK|MB_ICONINFORMATION);
return false;
}
if (FAILED(m_pMouseDevice->SetDataFormat(&c_dfDIMouse)))
{
MessageBox(NULL,L"设置鼠标读取格式失败",L"警告",MB_OK|MB_ICONINFORMATION);
InputRelease();
return false;
}
if (FAILED(m_pMouseDevice->SetCooperativeLevel(hwnd,DISCL_BACKGROUND|DISCL_NONEXCLUSIVE)))
{
MessageBox(NULL,L"设置鼠标协调格式失败",L"警告",MB_OK|MB_ICONINFORMATION);
InputRelease();
return false;
}
DIPROPDWORD dipROPWORD;
dipROPWORD.diph.dwSize=sizeof(DIPROPDWORD);
dipROPWORD.diph.dwHeaderSize=sizeof(DIPROPHEADER);
dipROPWORD.diph.dwObj=0;
dipROPWORD.diph.dwHow=DIPH_DEVICE;
dipROPWORD.dwData=ITEMS_NUM;
if (FAILED(m_pMouseDevice->SetProperty(DIPROP_BUFFERSIZE,&dipROPWORD.diph)))
{
MessageBox(NULL,L"设置鼠标设备属性失败",L"警告",MB_OK|MB_ICONINFORMATION);
InputRelease();
return false;
}
HRESULT hr=m_pMouseDevice->Acquire();
if (FAILED(hr))
{
MessageBox(NULL,L"取得鼠标访问权失败",L"警告",MB_OK|MB_ICONINFORMATION);
InputRelease();
return false;
}
return true;
}
void GameEngine_Input::InputRelease()
{
if (m_pKeyBoardDevice)
{
m_pKeyBoardDevice->Unacquire();
}
if (m_pMouseDevice)
{
m_pMouseDevice->Unacquire();
}
}
bool GameEngine_Input::CreateInput( HINSTANCE hInst,HWND hWnd)
{
CreateDirectInput(hInst);
CreateKeyBoard(hWnd);
CreateMouse(hWnd);
return true;
}
bool GameEngine_Input::IsKeyPress(int key)
{
HRESULT hr;
hr=
m_pKeyBoardDevice->GetDeviceState(sizeof(KeyBuffer),(LPVOID)KeyBuffer);
if (hr==DIERR_INPUTLOST)
{
m_pKeyBoardDevice->Acquire();
hr=m_pKeyBoardDevice->GetDeviceState(sizeof(KeyBuffer),(LPVOID)KeyBuffer);
if (FAILED(hr))
{
MessageBox(NULL,L"真的有问题,就是取得不到",L"Sorry",MB_OK);
return false;
}
}
if(KeyBuffer[key] & 0x80)
{
return true;
}
return false;
}
bool GameEngine_Input::ReadKeyBoard()
{
HRESULT hr;
hr=
m_pKeyBoardDevice->GetDeviceState(sizeof(KeyBuffer),(LPVOID)KeyBuffer);
if (hr==DIERR_INPUTLOST)
{
m_pKeyBoardDevice->Acquire();
hr=m_pKeyBoardDevice->GetDeviceState(sizeof(KeyBuffer),(LPVOID)KeyBuffer);
if (FAILED(hr))
{
MessageBox(NULL,L"真的有问题,就是取得不到",L"Sorry",MB_OK);
return false;
}
}
return true;
}
没有合适的资源?快使用搜索试试~ 我知道了~
Just-Code-It.zip_direct2d_it
共32个文件
tlog:9个
h:5个
obj:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 115 浏览量
2022-09-22
21:17:28
上传
评论
收藏 699KB ZIP 举报
温馨提示
用Direct2D实现的一个小程序,用渐变画刷绘制Just code it,初学者可以看看
资源推荐
资源详情
资源评论
收起资源包目录
Just-Code-It.zip (32个子文件)
Just Code It
MainForm.h 1KB
Just Code It.vcxproj.filters 2KB
GameEngine_Input.h 1KB
MainForm.cpp 3KB
Just Code It.vcxproj 4KB
GameEngine_Timer.h 660B
D2D1_Include.h 1KB
GameEngine_Timer.cpp 1KB
D2DPanel.h 693B
GameEngine_Input.cpp 5KB
D2DPanel.cpp 3KB
Debug
vc100.idb 1.01MB
Just Code It.lastbuildstate 70B
CL.write.1.tlog 9KB
CL.read.1.tlog 165KB
mt.read.1.tlog 1KB
Just Code It.log 3KB
GameEngine_Timer.obj 130KB
MainForm.obj 171KB
mt.command.1.tlog 962B
cl.command.1.tlog 6KB
Just Code It.exe.intermediate.manifest 381B
D2DPanel.obj 106KB
link.write.1.tlog 2KB
link.command.1.tlog 4KB
link.read.1.tlog 9KB
mt.write.1.tlog 582B
Main.obj 133KB
GameEngine_Input.obj 140KB
vc100.pdb 828KB
Just Code It.vcxproj.user 143B
Main.cpp 251B
共 32 条
- 1
资源评论
小贝德罗
- 粉丝: 70
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 中医临床诊疗术语-证候同义词典
- NovAtelConvert-Setup
- MySql主备数据库配置
- BGP路由基本配置(可以互通)
- 《软件方法2024版》公开内容202405更新-epub版
- 适用于tensorflow-2.11.0 CUDA版本11.2的cuDNN8.1版本
- 5Y study学习平台2016计算机基础-综合测试(8)_哔哩哔哩_bilibili_2580252704.mp4
- (大赛作品)STM32实现的F072RB NUCLEO智能家居控制.zip
- STM32实现的数字示波器源码+数字信号处理教程、配套实例.zip
- 【cookie续续】【cookie续续】【cookie续续】
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功