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

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

?? glwindow.cpp

?? 用vc++結(jié)合directinput編程序?qū)崿F(xiàn)鍵盤時間捕捉
?? CPP
字號:
//========================================================
/**
*  @file  GLWindows.h
*
*  項(xiàng)目描述: DirectInput鍵盤演示
*  文件描述:  程序窗口類 
*  適用平臺: Windows98/2000/NT/XP
*  
*  作者:     WWBOSS
*  電子郵件:  wwboss123@gmail.com
*  創(chuàng)建日期: 2006-09-13	
*  修改日期: 2006-10-10
*
*/     
//========================================================
#include "GLWindow.h"													/**< 包含GLwindows.h頭文件 */

#include <gl/gl.h>														/**< 包含OpenGL頭文件 */
#include <gl/glu.h>														


/** 構(gòu)造函數(shù) */
GLWindow::GLWindow()													
{
	m_WindowPosX	= 0;												/**< 窗口的左上角的X位置 */
	m_WindowPosY	= 0;												/**< 窗口的左上角的Y位置 */
	m_WindowWidth	= 640;												/**< 窗口的寬度 */
	m_WindowHeight	= 480;												/**< 窗口的高度 */
	m_ScreenWidth	= 1024;												/**< 全屏的寬度 */
	m_ScreenHeight	= 768;												/**< 全屏的高度 */
	m_BitsPerPixel	= 16;												/**< 顏色位深 */
	m_IsFullScreen	= false;											/**< 不使用全屏 */

	m_hWnd = 0;
	m_hDC = 0;
	m_hRC = 0;
}

/** 返回窗口的大小 */
int GLWindow::GetWidth()
{
	if (m_IsFullScreen == true)
	{
		return m_ScreenWidth;
	}
	else
	{
		return m_WindowWidth;
	}
}
int GLWindow::GetHeight()
{
	if (m_IsFullScreen == true)
	{
		return m_ScreenHeight;
	}
	else
	{
		return m_WindowHeight;
	}
}

/** 設(shè)置窗口的大小 */
void GLWindow::SetWidth(int width)
{
	if (m_IsFullScreen == true)
	{
		m_ScreenWidth = width;
	}
	else
	{
		m_WindowWidth = width;
	}
}
void GLWindow::SetHeight(int height)
{
	if (m_IsFullScreen == true)
	{
		m_ScreenHeight = height;
	}
	else
	{
		m_WindowHeight = height;
	}
}

/** 返回窗口左上角的位置 */
int GLWindow::GetPosX()
{
	if (m_IsFullScreen == false)
	{
		return m_WindowPosX;
	}
	return 0;
}
int GLWindow::GetPosY()
{
	if (m_IsFullScreen == false)
	{
		return m_WindowPosY;
	}
	return 0;
}

/** 設(shè)置窗口左上角的位置 */
void GLWindow::SetPosX(int x)
{
	if (m_IsFullScreen == false)
	{
		m_WindowPosX = x;
	}
}
void GLWindow::SetPosY(int y)
{
	if (m_IsFullScreen == false)
	{
		m_WindowPosY = y;
	}
}

/** 當(dāng)窗口大小改變時,通知OpenGL調(diào)整大小 */
void GLWindow::ReshapeGL()
{
	GLsizei width = GetWidth();
	GLsizei height = GetHeight();
	glViewport(0, 0, width, height);									/**< 重新設(shè)置視口 */
	glMatrixMode(GL_PROJECTION);									
	glLoadIdentity();													
	gluPerspective(45.0f, (GLfloat)width / (GLfloat)height, 1.0f, 100.0f);	
	glMatrixMode(GL_MODELVIEW);											
	glLoadIdentity();													
}

/** 改變窗口的顯示設(shè)置 */
bool GLWindow::ChangeScreenSetting()
{
	DEVMODE dmScreenSettings;											/**< 設(shè)備模式 */
	ZeroMemory(&dmScreenSettings, sizeof(DEVMODE));						/**< 清零結(jié)構(gòu) */
	dmScreenSettings.dmSize			= sizeof(DEVMODE);					/**< 結(jié)構(gòu)大小 */
	dmScreenSettings.dmPelsWidth	= GetWidth();						/**< 設(shè)置寬度 */
	dmScreenSettings.dmPelsHeight	= GetHeight();						/**< 設(shè)置高度 */
	dmScreenSettings.dmBitsPerPel	= m_BitsPerPixel;					/**< 設(shè)置位深度 */
	//dmScreenSettings.dmDisplayFrequency = 75;                           /**< 設(shè)置屏幕刷新率 */
	dmScreenSettings.dmFields		= DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT ;//| DM_DISPLAYFREQUENCY;

	/// 改變顯示模式
	if (ChangeDisplaySettings(&dmScreenSettings, 0) != DISP_CHANGE_SUCCESSFUL)
	{
		return false;													/**< 如果失敗,返回false */
	}

	return true;														/**< 成功返回 */
}

/** 創(chuàng)建windows窗口 */
bool GLWindow::Create(const char * window_title,const char * class_name,bool fullscreen, HINSTANCE h_instance, LPVOID lpParam)
{
	m_IsFullScreen = fullscreen;
	int nX=0;
	int nY=0;
	PIXELFORMATDESCRIPTOR pfd =											/**< 設(shè)置像素描述結(jié)構(gòu) */
	{
		sizeof(PIXELFORMATDESCRIPTOR),									/**< 像素描述結(jié)構(gòu)的大小 */ 
		1,																/**< 版本號 */
		PFD_DRAW_TO_WINDOW	|											/**< 緩存區(qū)的輸出顯示在一個窗口中 */
		PFD_SUPPORT_OPENGL	|											/**< 緩存區(qū)支持OpenGL繪圖 */
		PFD_STEREO			|											/**< 顏色緩存區(qū)是立體緩存 */
		PFD_DOUBLEBUFFER,												/**< 顏色緩存區(qū)是雙緩存 */
		PFD_TYPE_RGBA,													/**< 使用RGBA顏色格式 */
		m_BitsPerPixel,													/**< 顏色緩存區(qū)中顏色值所占的位深 */
		0, 0, 0, 0, 0, 0,												/**< 使用默認(rèn)的顏色設(shè)置 */
		0,																/**< 無Alpha緩存 */
		0,																/**< 顏色緩存區(qū)中alpha成分的移位計數(shù) */
		0,																/**< 無累計緩存區(qū) */
		0, 0, 0, 0,														/**< 累計緩存區(qū)無移位 */
		32,																/**< 32位深度緩存 */
		0,																/**< 無蒙版緩存 */
		0,																/**< 無輔助緩存區(qū) */
		PFD_MAIN_PLANE,													/**< 必須為PFD_MAIN_PLANE,設(shè)置為主繪圖層 */
		0,																/**< 表示OpenGL實(shí)現(xiàn)所支持的上層或下層平面的數(shù)量 */
		0, 0, 0															/**< 過時,已不再使用 */
	};

	DWORD windowStyle = WS_OVERLAPPEDWINDOW & ~WS_SIZEBOX & ~WS_MAXIMIZEBOX;	/**< 定義我們窗口類型,使用常規(guī)設(shè)定,去掉最大化按鈕,并不能改變窗體大小 */
	DWORD windowExtendedStyle = WS_EX_APPWINDOW;						

	if (m_IsFullScreen == true)											/**< 如果為全屏模式,嘗試轉(zhuǎn)化為全屏模式 */
	{
		if (ChangeScreenSetting() == false)
		{																/**< 全屏模式轉(zhuǎn)換失敗,彈出對話框提示,并嘗試窗口模式 */
			MessageBox(HWND_DESKTOP, "模式轉(zhuǎn)換失敗.\n在窗口模式下運(yùn)行.", "Error", MB_OK | MB_ICONEXCLAMATION);
			m_IsFullScreen = false;										/**< 設(shè)置為窗口模式 */
		}
		else															/**< 如果為窗口模式 */
		{
			ShowCursor(false);											/**< 隱藏鼠標(biāo) */
			windowStyle = WS_POPUP;										/**< 設(shè)置窗口模式為頂層窗口 */
			windowExtendedStyle |= WS_EX_TOPMOST;						
		}																
	}

	/// 調(diào)整我們窗口的大小,使其客戶區(qū)的大小為我們設(shè)置的大小
	RECT windowRect = {GetPosX(), GetPosY(), GetPosX() + GetWidth(), GetPosY() + GetHeight()};
	if (m_IsFullScreen == false)										/**< 在窗口模式下使用 */
	{	
		windowExtendedStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;	/**< 使窗口具有3D外觀 */
		int wid = GetSystemMetrics(SM_CXSCREEN);		/**< 獲取當(dāng)前屏幕寬 */
		int hei = GetSystemMetrics(SM_CYSCREEN);		/**< 獲取當(dāng)前屏幕高 */
		nX = (wid - GetWidth()) / 2;                    /**< 計算窗口居中用 */
		nY = (hei - GetHeight()) / 2;			
		/// 調(diào)整我們窗口的大小,使其客戶區(qū)的大小為我們設(shè)置的大小
		AdjustWindowRectEx(&windowRect, windowStyle, 0, windowExtendedStyle);
		/// 判斷窗口的左上角是否隱藏在桌面外
		if (windowRect.left < 0)										/**< 如果窗口X坐標(biāo)為負(fù),移動坐標(biāo)到0處,并調(diào)整窗口的位置 */
		{
			windowRect.right -= windowRect.left;						
			windowRect.left = 0;										
		}
		if (windowRect.top < 0)											/**< 如果窗口Y坐標(biāo)為負(fù),移動坐標(biāo)到0處,并調(diào)整窗口的位置 */
		{
			windowRect.bottom -= windowRect.top;						
			windowRect.top = 0;											
		}
		ShowCursor(true);	
	}

	/// 創(chuàng)建窗口
	m_hWnd = CreateWindowEx(windowExtendedStyle,						/**< 窗口的擴(kuò)展風(fēng)格 */
							class_name,									/**< 窗口的類名 */
							window_title,								/**< 窗口標(biāo)題 */
							windowStyle,								/**< 窗口的風(fēng)格 */
							nX,nY,                                      /**< 窗口的左上角位置 */
							windowRect.right - windowRect.left,			/**< 窗口的寬度 */
							windowRect.bottom - windowRect.top,			/**< 窗口的高度 */
                            HWND_DESKTOP,								/**< 窗口的父窗口為桌面 */
							0,											/**< 無菜單 */
							h_instance,									/**< 傳入窗口的實(shí)例句柄 */
							lpParam);									/**< 傳入程序類參數(shù) */

	while (m_hWnd != 0)													/**< 窗口是否創(chuàng)建成功 */
	{
		m_hDC = GetDC(m_hWnd);											/**< 返回窗口的設(shè)備描述表 */
		if (m_hDC == 0)													/**< 如果為空 */
		{																/**< 失敗 */
			break;														
		}

		GLuint PixelFormat = ChoosePixelFormat(m_hDC, &pfd);			/**< 查找一個兼容的像素格式 */
		if (PixelFormat == 0)											/**< 如果沒找到 */
		{																/**< 失敗 */
			break;														
		}
		if (SetPixelFormat(m_hDC, PixelFormat, &pfd) == false)			/**< 設(shè)置像素格式 */
		{																/**< 失敗 */
			break;														
		}
		m_hRC = wglCreateContext(m_hDC);								/**< 創(chuàng)建OpenGL的渲染描述表 */
		if (m_hRC == 0)													/**< 如果為空 */
		{																/**< 失敗 */
			break;														
		}
		if (wglMakeCurrent(m_hDC, m_hRC) == false)						/**< 設(shè)置當(dāng)前的OpenGL的渲染對象為當(dāng)前的窗口 */
		{																/**< 失敗 */
			break;														
		}
        
		ShowWindow(m_hWnd, SW_NORMAL);									/**< 顯示窗口 */
		ReshapeGL();													/**< 告訴OpenGL調(diào)整窗口大小 */
		return true;													/**< 成功返回 */
	}																	

	Destroy();															/**< 釋放資源 */
	return false;														/**< 返回失敗 */
}

/** 刪除OpenGL窗口 */
void GLWindow::Destroy()									
{
	if (m_hWnd != 0)										/**< 窗口句柄是否存在 */
	{
		if (m_hDC != 0)										/**< 窗口設(shè)備描述表是否存在 */
		{
			wglMakeCurrent(m_hDC, 0);						/**< 設(shè)置當(dāng)前的OpenGL的渲染對象為空NULL */
			if (m_hRC != 0)									/**< OpenGL的渲染描述表是否存在 */
			{
				wglDeleteContext(m_hRC);					/**< 釋放OpenGL的渲染描述表 */
				m_hRC = 0;									/**< 設(shè)置OpenGL的渲染描述表為0 */
			}
			ReleaseDC(m_hWnd, m_hDC);						/**< 釋放窗口的設(shè)備描述表 */
			m_hDC = 0;										/**< 設(shè)置窗口的設(shè)備描述表為0 */
		}
		DestroyWindow(m_hWnd);								/**< 刪除窗口 */
		m_hWnd = 0;											/**< 設(shè)置窗口句柄為0 */
	}

	if (m_IsFullScreen)										/**< 如果為全屏模式,在程序結(jié)束后,變換到窗口模式,并顯示鼠標(biāo) */
	{
		ChangeDisplaySettings(NULL, 0);						/**< 變換到窗口模式 */
		ShowCursor(true);									/**< 顯示鼠標(biāo) */
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美乱码久久久久久| 国产精品丝袜在线| 一区二区视频在线| 风流少妇一区二区| 日韩一区国产二区欧美三区| 亚洲日本va午夜在线影院| 国产一区在线不卡| 日韩午夜三级在线| 久久国产视频网| 久久综合中文字幕| 日韩电影在线看| 制服丝袜亚洲色图| 日韩电影一区二区三区四区| 91小视频在线| 午夜久久久影院| 51精品秘密在线观看| 久热成人在线视频| 国产日韩精品一区| 欧美亚洲动漫精品| 免费视频一区二区| 国产精品私人自拍| 欧美性xxxxxxxx| 亚洲第一久久影院| 久久精品日产第一区二区三区高清版| 久久精品99久久久| 欧美日韩国产色站一区二区三区| 91影院在线观看| 亚洲一区二区三区中文字幕 | 亚洲视频小说图片| 成人看片黄a免费看在线| 国产精品网站在线播放| 成人精品视频.| 中文字幕一区二| 欧美日韩免费在线视频| 午夜av区久久| 国产色爱av资源综合区| 91欧美激情一区二区三区成人| 夜夜嗨av一区二区三区网页 | 亚洲精品免费在线| 欧美日本韩国一区二区三区视频| 麻豆国产一区二区| 亚洲日本一区二区| 欧美电视剧免费观看| 九色综合狠狠综合久久| 日韩理论片中文av| 26uuu欧美| 欧美三级日本三级少妇99| 国产老女人精品毛片久久| 依依成人综合视频| 欧美日韩成人综合| 91麻豆国产香蕉久久精品| 国产剧情一区二区三区| 欧美三级日韩三级| 亚洲欧洲av另类| 欧美日韩二区三区| 99re成人精品视频| 丁香啪啪综合成人亚洲小说| 丝袜诱惑制服诱惑色一区在线观看 | 国产精品正在播放| 免费观看一级特黄欧美大片| 亚洲精品成人少妇| 亚洲人妖av一区二区| 久久在线观看免费| 欧美精品一区二区久久久| 8x8x8国产精品| 欧美一区二区在线看| 欧美特级限制片免费在线观看| www.亚洲色图.com| 99精品久久99久久久久| 91片在线免费观看| 91视频在线观看| 欧美亚洲禁片免费| 欧美人体做爰大胆视频| 欧美系列一区二区| 欧美日韩成人高清| 欧美电影免费观看高清完整版| 精品av久久707| 欧美国产精品一区二区三区| 中文字幕综合网| 亚洲制服欧美中文字幕中文字幕| 亚洲一区国产视频| 九色综合国产一区二区三区| 成人免费黄色在线| 色婷婷av一区二区三区大白胸| 欧美日韩精品高清| 国产日韩欧美一区二区三区乱码 | 欧美中文字幕一区| 日韩美女视频一区二区在线观看| 久久精品视频免费观看| 一区二区三区精密机械公司| 午夜视频在线观看一区| 国产精品亚洲一区二区三区在线| 国产一区中文字幕| 91国产精品成人| 久久亚洲精精品中文字幕早川悠里| 中文久久乱码一区二区| 亚洲va国产天堂va久久en| 国产剧情在线观看一区二区| 91在线观看高清| 久久夜色精品国产噜噜av| 亚洲成人av在线电影| av在线不卡免费看| 国产午夜三级一区二区三| 亚洲激情在线播放| 成人综合在线观看| 久久综合色之久久综合| 麻豆精品久久精品色综合| 在线观看视频欧美| 一区二区在线观看视频| 成人精品高清在线| 中文字幕亚洲在| 亚洲大片免费看| 亚洲.国产.中文慕字在线| 99视频精品在线| ㊣最新国产の精品bt伙计久久| 国产a区久久久| 中文字幕 久热精品 视频在线| 久久精品国产秦先生| 精品久久久久久亚洲综合网| 毛片一区二区三区| 久久久久久影视| eeuss鲁片一区二区三区| 中文字幕亚洲电影| 欧美久久一二区| 免费看日韩精品| 美女视频黄 久久| 国产欧美一区二区精品秋霞影院| 蜜臀va亚洲va欧美va天堂| 欧美videofree性高清杂交| 韩国精品久久久| 欧美精品一区二区三| 成人av手机在线观看| 亚洲国产一区视频| 欧美一级国产精品| 播五月开心婷婷综合| 亚洲国产精品一区二区www在线| 7777精品伊人久久久大香线蕉超级流畅 | 678五月天丁香亚洲综合网| 国产精品久久午夜夜伦鲁鲁| 一本久久精品一区二区| 日韩av电影天堂| 亚洲精品视频一区| 国产丝袜在线精品| 精品久久久影院| 精品少妇一区二区三区免费观看 | 精品无码三级在线观看视频 | 久久亚洲捆绑美女| 日本精品免费观看高清观看| 久久99国产精品麻豆| 久久精品99国产精品| 欧美aⅴ一区二区三区视频| 婷婷丁香激情综合| 日韩黄色免费电影| 免费视频一区二区| 免费高清成人在线| 免费成人av在线播放| 肉色丝袜一区二区| 久久精品国产77777蜜臀| 伦理电影国产精品| 国产suv精品一区二区三区| 成人黄页在线观看| 欧美少妇bbb| 欧美xxxxx裸体时装秀| 国产日韩精品一区二区三区| 91精品国产手机| 欧美精品久久天天躁| 国产精品亲子伦对白| 麻豆91精品91久久久的内涵| 欧美午夜在线一二页| 亚洲品质自拍视频网站| 春色校园综合激情亚洲| 91精品国产综合久久福利| 一区二区三区精密机械公司| 成人在线视频一区| 国产精品欧美一区喷水| 成人av电影在线播放| 久久这里只有精品6| 国产精品亚洲成人| 国产成人精品在线看| www.亚洲人| 精品国产乱码久久久久久浪潮| 一区精品在线播放| 狠狠色狠狠色综合日日91app| 18成人在线观看| 美脚の诱脚舐め脚责91| 在线精品视频小说1| 国产日韩精品一区二区三区在线| 香蕉久久夜色精品国产使用方法| 9人人澡人人爽人人精品| 久久久精品一品道一区| 国产精品 欧美精品| 精品久久久久久久人人人人传媒 | 欧美国产精品一区二区三区| 欧美aaa在线| 日韩美女在线视频| 毛片不卡一区二区| 久久女同互慰一区二区三区| 精品一区二区在线观看| 久久综合精品国产一区二区三区| 奇米四色…亚洲|