⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_directinput.cpp

📁 这是纸牌游戏斗地主,算法完整,可以单机,网络连线玩.
💻 CPP
字号:
// My_DirectInput.cpp: implementation of the CMyDirectInput class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "斗地主.h"
#include "MainFrm.h"

#include "Game.h"
#include "My_directdraw.h"
#include "My_DirectInput.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMyDirectInput::CMyDirectInput()
{
	pDI = NULL;       
	pDI_Keyborad = NULL; 
	pDI_Mouse = NULL; 
}

CMyDirectInput::~CMyDirectInput()
{
	if(pDI_Keyborad)
	{
		pDI_Keyborad->Release();
		pDI_Keyborad = NULL;
	}

	if(pDI_Mouse)
	{
		pDI_Mouse->Release();
		pDI_Mouse = NULL;
	}

	if(pDI)
	{
		pDI->Release();
		pDI = NULL;
	}
}

int CMyDirectInput::KeyboradInit()
{
	HINSTANCE hinst = AfxGetInstanceHandle(); //得到程序实例句柄;
	//取得DirectInput组件接口;
	result = DirectInputCreateEx(hinst, DIRECTINPUT_VERSION, 
        IID_IDirectInput7, (void**)&pDI, NULL);

	if(result != DI_OK)
	{
		AfxMessageBox("建立 DirectInput 对象失败!");
	}

	//建立键盘设备;
	result = pDI->CreateDeviceEx(GUID_SysKeyboard,
								 IID_IDirectInputDevice7,
								 (void**)&pDI_Keyborad,
								 NULL); 

	if(result != DI_OK)
	{
		AfxMessageBox("建立键盘输入设备失败!");
	}
	//设置数据格式;
	result = pDI_Keyborad->SetDataFormat(&c_dfDIKeyboard);

	if(result != DI_OK)
	{
		AfxMessageBox("设定数据格式失败!");
	}

	result = pDI_Keyborad->SetCooperativeLevel(pCMainFrame->m_hWnd, 
					DISCL_BACKGROUND | DISCL_NONEXCLUSIVE);

	if(result != DI_OK)
	{
		AfxMessageBox("设定程序协调层级失败!");
	}

	result = pDI_Keyborad->Acquire(); 
	
	if(result != DI_OK)
	{
		AfxMessageBox("取用输入设备失败!");
	}

	
	// TODO: Add your specialized creation code here
	return 1;
}

int CMyDirectInput::MouseInit()
{

	HINSTANCE hinst = AfxGetInstanceHandle();  

	result = DirectInputCreateEx(hinst, DIRECTINPUT_VERSION, 
        IID_IDirectInput7, (void**)&pDI, NULL); 

	if(result != DI_OK)
	{
		AfxMessageBox("建立 DirectInput 对象失败!");
		return 0;
	}

	result = pDI->CreateDeviceEx(GUID_SysMouse,
								 IID_IDirectInputDevice7,
								 (void**)&pDI_Mouse,
								 NULL); 

	if(result != DI_OK)
	{
		AfxMessageBox("建立鼠标输入装置失败!");
		return 0;
	}

	result = pDI_Mouse->SetDataFormat(&c_dfDIMouse2);

	if(result != DI_OK)
	{
		AfxMessageBox("设定数据格式失败!");
		return 0;
	}

	result = pDI_Mouse->SetCooperativeLevel(pCMainFrame->m_hWnd, 
                   DISCL_BACKGROUND | DISCL_NONEXCLUSIVE); 

	if(result != DI_OK)
	{
		AfxMessageBox("设定程序协调层级失败!");
		return 0;
	}

	result = pDI_Mouse->Acquire();
	
	if(result != DI_OK)
	{
		AfxMessageBox("取用输入设备失败!");
		return 0;
	}

	// TODO: Add your specialized creation code here

	return 1;
}
//检查是否在CRect中有鼠标左键按下,如果有,返回1,否则返回0;
int CMyDirectInput::IsLButtonDown(const CRect& rect)
{
	CPoint point;
	DIMOUSESTATE2	MState;
	HRESULT result = pDI_Mouse->GetDeviceState(sizeof(DIMOUSESTATE2),(LPVOID)&MState);

	if(result != DI_OK )
	{
		AfxMessageBox("取得鼠标状态失败!");
		return -1;
	}

	if(MState.rgbButtons[0] & 0x80)  //如果点击键右键的处理情况;
	{
		::GetCursorPos(&point);
		if(point.x >= rect.left &&
		   point.x <= rect.right &&
		   point.y >= rect.top &&
		   point.y <= rect.bottom )
		{
			return 1;
		}
	}
	return 0;
}
//检查是否在CRect中有鼠标右键按下,如果有,返回1,否则返回0;
int CMyDirectInput::IsRButtonDown(const CRect& rect)
{
	CPoint point;
	DIMOUSESTATE2	MState;
	HRESULT result = pDI_Mouse->GetDeviceState(sizeof(DIMOUSESTATE2),(LPVOID)&MState);

	if(result != DI_OK )
	{
		AfxMessageBox("取得鼠标状态失败!");
		return -1;
	}

	if(MState.rgbButtons[1] & 0x80)  //如果点击键右键的处理情况;
	{
		::GetCursorPos(&point);
		if(point.x >= rect.left &&
		   point.x <= rect.right &&
		   point.y >= rect.top &&
		   point.y <= rect.bottom )
		{
			return 1;
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -