亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 鍵盤獲取.cpp

?? DirectInput的基本實(shí)現(xiàn) 只是基本應(yīng)用
?? CPP
字號:
// 鍵盤獲取.cpp : 定義應(yīng)用程序的入口點(diǎn)。
//

#include "stdafx.h"
#include "鍵盤獲取.h"
#define MAX_LOADSTRING 100

#include <dinput.h>
#include <dinputd.h>
#pragma comment(lib,"dinput8.lib")
#pragma comment(lib,"dxguid.lib")

#define MK_MIN		0x100
#define MK_LEFT		0x100	//>255
#define MK_RIGHT	0x101
#define MK_MID		0x102

#define SAFE_RELEASE(p) if(p) {p->Release();p=NULL;}

// 全局變量:
HINSTANCE hInst;								// 當(dāng)前實(shí)例
TCHAR szTitle[MAX_LOADSTRING];					// 標(biāo)題欄文本
TCHAR szWindowClass[MAX_LOADSTRING];			// 主窗口類名

HDC memDC;//定義一個兼容DC
HBITMAP hBitmap;
BITMAP bmp;

//在DirectX9.0c的SDK中的DirectInput實(shí)際是8.0版本

LPDIRECTINPUT8			m_pDInput;//DirectInput8的接口指針
LPDIRECTINPUTDEVICE8	m_pDInputKB;//設(shè)備指針

char			m_strKeyState[256];
char			m_strKeyStateOld[256];         
int x,y;

// 此代碼模塊中包含的函數(shù)的前向聲明:
ATOM				MyRegisterClass(HINSTANCE hInstance);
BOOL				InitInstance(HINSTANCE, int);
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK	About(HWND, UINT, WPARAM, LPARAM);

LRESULT GetIsKeyDown(DWORD keycode)
{
	if(keycode<MK_MIN)
		return (0x80 & m_strKeyState[keycode]) | m_strKeyStateOld[keycode] >>4 ;
};
LRESULT Update(void)
{
	//更新之前記錄一下上一次的狀態(tài)
	memcpy(m_strKeyStateOld,m_strKeyState,sizeof(m_strKeyState));

	if(DI_OK!=m_pDInputKB->GetDeviceState(sizeof(m_strKeyState),m_strKeyState))
	{	
		memset(&m_strKeyState,0,sizeof(m_strKeyState));	//清除上一次的狀態(tài)
		m_pDInputKB->Acquire();
	}
  	return DI_OK;
}

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: 在此放置代碼。
	MSG msg;
	HACCEL hAccelTable;

	// 初始化全局字符串
	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
	LoadString(hInstance, IDC_MY, szWindowClass, MAX_LOADSTRING);
	MyRegisterClass(hInstance);

	// 執(zhí)行應(yīng)用程序初始化:
	if (!InitInstance (hInstance, nCmdShow)) 
	{
		return FALSE;
	}

	hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_MY);

	// 主消息循環(huán):
	ZeroMemory(&msg,sizeof(msg));
	while (msg.message!=WM_QUIT) 
	{
		if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) 
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		else
		{
			Update();
		}
	}

	return (int) msg.wParam;
}

//
//  函數(shù): MyRegisterClass()
//
//  目的: 注冊窗口類。
//
//  注釋: 
//
//    僅當(dāng)希望在已添加到 Windows 95 的
//    “RegisterClassEx”函數(shù)之前此代碼與 Win32 系統(tǒng)兼容時,
//    才需要此函數(shù)及其用法。調(diào)用此函數(shù)
//    十分重要,這樣應(yīng)用程序就可以獲得關(guān)聯(lián)的
//   “格式正確的”小圖標(biāo)。
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
	WNDCLASSEX wcex;

	wcex.cbSize = sizeof(WNDCLASSEX); 

	wcex.style			= CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc	= (WNDPROC)WndProc;
	wcex.cbClsExtra		= 0;
	wcex.cbWndExtra		= 0;
	wcex.hInstance		= hInstance;
	wcex.hIcon			= LoadIcon(hInstance, (LPCTSTR)IDI_MY);
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszMenuName	= (LPCTSTR)IDC_MY;
	wcex.lpszClassName	= szWindowClass;
	wcex.hIconSm		= LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

	return RegisterClassEx(&wcex);
}

//
//   函數(shù): InitInstance(HANDLE, int)
//
//   目的: 保存實(shí)例句柄并創(chuàng)建主窗口
//
//   注釋: 
//
//        在此函數(shù)中,我們在全局變量中保存實(shí)例句柄并
//        創(chuàng)建和顯示主程序窗口。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // 將實(shí)例句柄存儲在全局變量中

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

//
//  函數(shù): WndProc(HWND, unsigned, WORD, LONG)
//
//  目的: 處理主窗口的消息。
//
//  WM_COMMAND	- 處理應(yīng)用程序菜單
//  WM_PAINT	- 繪制主窗口
//  WM_DESTROY	- 發(fā)送退出消息并返回
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId, wmEvent;
	PAINTSTRUCT ps;
	HDC hdc;

	switch (message) 
	{
	case WM_COMMAND:
		wmId    = LOWORD(wParam); 
		wmEvent = HIWORD(wParam); 
		// 分析菜單選擇:
		switch (wmId)
		{
		case IDM_ABOUT:
			DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
			break;
		case IDM_EXIT:
			DestroyWindow(hWnd);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
		}
		break;
	case WM_CREATE:
		hBitmap = NULL;
		//步驟(1):創(chuàng)建DirectInput8對象
		if(DI_OK!=DirectInput8Create( hInst,DIRECTINPUT_VERSION,
				IID_IDirectInput8,(LPVOID*)&m_pDInput,NULL))
			MessageBox(hWnd,"創(chuàng)建DirectInput 對象失敗!","ERROR",MB_ICONERROR|MB_OK);

		//步驟(2):創(chuàng)建鍵盤設(shè)備
		if(DI_OK!=m_pDInput->CreateDevice(GUID_SysKeyboard,&m_pDInputKB,NULL))
			MessageBox(hWnd,"創(chuàng)建鍵盤設(shè)備失敗!","ERROR",MB_ICONERROR|MB_OK);

		//步驟(3):設(shè)置數(shù)據(jù)格式		
		if(DI_OK!=	m_pDInputKB->SetDataFormat(&c_dfDIKeyboard)) 
			MessageBox(hWnd,"設(shè)置鍵盤數(shù)據(jù)格式失敗!","ERROR",MB_ICONERROR|MB_OK); 

		//步驟(4):設(shè)置設(shè)備的協(xié)調(diào)層級
		m_pDInputKB->SetCooperativeLevel(hWnd,DISCL_NONEXCLUSIVE|DISCL_FOREGROUND); 
		
		//步驟(5):獲取設(shè)備
		m_pDInputKB->Acquire();		
	
		//步驟(6):清除狀態(tài),并且獲取輸入的數(shù)據(jù)(在Updata這個函數(shù)中)
		memset(&m_strKeyState,0,sizeof(m_strKeyState));		
		memset(&m_strKeyStateOld,0,sizeof(m_strKeyState));	
	
		SetTimer(hWnd,1,20,NULL);
		break;
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		if(!hBitmap)
		{
			memDC = CreateCompatibleDC(hdc);//創(chuàng)建內(nèi)存DC
			hBitmap = (HBITMAP)LoadImage(hInst,"ball.bmp" ,IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);//高色位圖也沒關(guān)系
			SelectObject(memDC,hBitmap);//選入新位圖入內(nèi)存DC
			GetObject(hBitmap, sizeof(BITMAP), &bmp);
		}
		BitBlt(hdc,x,y,bmp.bmWidth,bmp.bmHeight,memDC,0,0,SRCCOPY);//將內(nèi)存DC中的數(shù)據(jù)復(fù)制到顯示DC
		ReleaseDC(hWnd,memDC);

		EndPaint(hWnd, &ps);
		break;
	case WM_TIMER:
		RECT rect;
		GetClientRect(hWnd, &rect);

		switch(wParam)
		{
		case 1:
			if(0x80&m_strKeyState[DIK_RIGHT])
				if(x+80 > rect.right)     
					x = rect.right - 80;
				else
					x+=10;
			if(0x80&m_strKeyState[DIK_LEFT])  
				if(x-10 < 0)          
					x = 0;
				else
					x-=10;
			if(0x80&m_strKeyState[DIK_UP])
				if(y-10 < 0)         
					y = 0;
				else
					y-=10;
			if(0x80&m_strKeyState[DIK_DOWN])
				if(y+80 > rect.bottom)    
					y = rect.bottom-80;
				else
					y+=10;
			if(0x80&m_strKeyState[DIK_ESCAPE])
			{
				KillTimer(hWnd,1);            
				PostMessage(hWnd,WM_CLOSE,NULL,NULL);
			}


			if(0x80&m_strKeyState[DIK_A])
				MessageBox(NULL,"DirectInput","",MB_OK);


		}
		InvalidateRect(hWnd,&rect,FALSE);
		break;
	case WM_KEYDOWN:
		if(wParam=='A')
			MessageBox(NULL,"Message","",MB_OK);
		break;
	case WM_DESTROY:
		m_pDInputKB->Unacquire();
		SAFE_RELEASE(m_pDInputKB);
		SAFE_RELEASE(m_pDInput);
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}

// “關(guān)于”框的消息處理程序。
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
	case WM_INITDIALOG:
		return TRUE;

	case WM_COMMAND:
		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
		{
			EndDialog(hDlg, LOWORD(wParam));
			return TRUE;
		}
		break;
	}
	return FALSE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品露脸国语对白| 美女www一区二区| 不卡视频免费播放| 国产精品久久久久久亚洲伦| 不卡视频免费播放| 亚洲精品成a人| 91精品国产综合久久久久久久| 免费高清成人在线| 精品国产乱码久久久久久老虎 | 日韩午夜精品电影| 国产精品小仙女| 亚洲欧美日韩小说| 9191久久久久久久久久久| 另类小说图片综合网| 久久精品人人做人人爽97| 99久久99久久免费精品蜜臀| 亚洲一区二区三区美女| 精品日韩在线观看| 成人精品免费视频| 亚洲国产一区二区三区| 欧美大片一区二区三区| 成人精品视频一区二区三区| 亚洲成人动漫av| 久久久久国产精品人| 欧美性生活久久| 国产在线精品一区二区三区不卡| 亚洲男同性恋视频| 日韩视频在线永久播放| 91免费精品国自产拍在线不卡| 免费观看日韩电影| 亚洲免费观看高清完整版在线观看 | 日韩欧美激情四射| 91在线一区二区| 免费人成网站在线观看欧美高清| 中文字幕欧美国产| 日韩三级在线免费观看| 色噜噜久久综合| 国产精品夜夜爽| 日韩电影在线一区二区三区| 精品成人一区二区三区四区| 精品视频免费在线| 99精品欧美一区二区三区小说| 一区二区成人在线观看| 国产欧美一区视频| 欧美日韩精品福利| 91网站最新网址| 国产成人无遮挡在线视频| 视频一区在线视频| 亚洲综合久久久久| 亚洲色图制服丝袜| 中文字幕av不卡| 久久这里都是精品| 欧美大度的电影原声| 欧美制服丝袜第一页| 成人高清视频在线| 国产精品亚洲午夜一区二区三区 | 午夜欧美在线一二页| 国产精品免费免费| 久久精品视频免费观看| 久久综合色婷婷| 精品国产免费视频| 日韩欧美在线1卡| 欧美一区二区视频在线观看2020| 色8久久人人97超碰香蕉987| 成人精品一区二区三区中文字幕| 国产综合一区二区| 久草精品在线观看| 精品一二三四在线| 国产在线国偷精品免费看| 久久99热狠狠色一区二区| 蜜桃av噜噜一区二区三区小说| 午夜在线成人av| 舔着乳尖日韩一区| 日日夜夜一区二区| 日韩av高清在线观看| 日av在线不卡| 精品一区二区在线免费观看| 激情综合五月婷婷| 国内成+人亚洲+欧美+综合在线| 久久成人久久爱| 国产福利一区二区三区视频| 国产成人免费视频网站| 成人免费观看男女羞羞视频| 成人污视频在线观看| 99久久久免费精品国产一区二区| 91亚洲精品久久久蜜桃| 色婷婷亚洲婷婷| 欧美日韩在线电影| 日韩情涩欧美日韩视频| 久久久久成人黄色影片| 国产精品久久一卡二卡| 一区二区激情小说| 日韩中文欧美在线| 韩国一区二区三区| 成人av资源网站| 欧美中文字幕亚洲一区二区va在线| 一本色道久久综合精品竹菊| 日本韩国欧美一区| 欧美一区二区三区啪啪| 久久伊99综合婷婷久久伊| 国产精品白丝在线| 亚洲第一久久影院| 国产乱人伦偷精品视频不卡| 成人高清免费观看| 欧美日韩精品综合在线| 欧美精品一区二区三区蜜桃| 最近中文字幕一区二区三区| 午夜激情久久久| 国产高清一区日本| 欧美日韩精品综合在线| 国产视频一区在线观看| 亚洲在线视频免费观看| 国产最新精品精品你懂的| 99精品黄色片免费大全| 日韩网站在线看片你懂的| 中文字幕一区二区不卡| 强制捆绑调教一区二区| 94-欧美-setu| www亚洲一区| 亚洲线精品一区二区三区| 国产福利一区在线| 4hu四虎永久在线影院成人| 国产精品久久久99| 另类小说综合欧美亚洲| 91久久国产最好的精华液| 精品久久国产97色综合| 一区二区三区四区在线播放| 国产精品1024| 欧美精品一卡二卡| 中文字幕一区日韩精品欧美| 激情综合亚洲精品| 欧美日韩视频不卡| 成人免费在线视频| 国产一区在线观看视频| 欧美剧情片在线观看| 亚洲毛片av在线| 国产激情一区二区三区四区 | 亚洲国产精品成人久久综合一区| 午夜视频在线观看一区二区| 粉嫩欧美一区二区三区高清影视 | 欧洲中文字幕精品| 国产精品毛片a∨一区二区三区| 免费成人美女在线观看| 欧美日韩视频专区在线播放| 日韩理论片在线| 粉嫩久久99精品久久久久久夜| 日韩精品中文字幕在线不卡尤物| 亚洲午夜免费视频| 色综合久久六月婷婷中文字幕| 中文字幕不卡的av| 国产麻豆午夜三级精品| 日韩欧美国产综合| 日韩av电影免费观看高清完整版在线观看 | 久久国内精品自在自线400部| 在线观看一区日韩| 亚洲精品国产无天堂网2021| 99视频精品全部免费在线| 久久亚洲影视婷婷| 男人的天堂久久精品| 欧美精品色综合| 日本最新不卡在线| 91精品欧美久久久久久动漫 | 亚洲国产精品一区二区久久恐怖片| 99riav一区二区三区| 中文字幕不卡的av| av影院午夜一区| 亚洲欧美日韩系列| 色狠狠一区二区| 亚洲第一福利一区| 911国产精品| 久久se精品一区精品二区| 精品欧美乱码久久久久久| 久99久精品视频免费观看| 2021中文字幕一区亚洲| 国内精品久久久久影院色| 久久嫩草精品久久久久| 成人永久看片免费视频天堂| 中文字幕在线观看不卡| 色先锋久久av资源部| 亚洲成av人片一区二区梦乃| 91精品国产高清一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩一区二区三区视频在线观看| 久久国产精品72免费观看| 久久综合成人精品亚洲另类欧美 | 欧美成人综合网站| 国产一区二区三区四| 国产精品麻豆99久久久久久| 一本到三区不卡视频| 午夜精品免费在线观看| 日韩免费看的电影| 成人一区二区三区视频| 亚洲少妇30p| 欧美一级欧美一级在线播放| 国产精品一区二区x88av| 亚洲视频在线一区二区| 欧美日本韩国一区二区三区视频 | 日韩欧美三级在线| 成人国产电影网| 午夜精品久久久久久不卡8050|