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

📄 winproc.h

📁 游戏编程精华02-含有几十个游戏编程例子
💻 H
📖 第 1 页 / 共 2 页
字号:

		// Try To Set Selected Mode And Get Results.  NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar.
		if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
		{
			// If The Mode Fails, Offer Two Options.  Quit Or Use Windowed Mode.
			if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","WARNING",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)
			{
				fullscreen=FALSE;											// Windowed Mode Selected.
			}
			else
			{
				// Pop Up A Message Box Letting User Know The Program Is Closing.
				MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP);
				return FALSE;												// Return FALSE
			}																
		}																	
	}																		
																			
	if (fullscreen)															// Are We Still In Fullscreen Mode?
	{																		
		dwExStyle=WS_EX_APPWINDOW;											// Window Extended Style
		dwStyle=WS_POPUP;													// Windows Style
		ShowCursor(FALSE);													// Hide Mouse Pointer
	}																		
	else																	
	{																		
		dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;						// Window Extended Style
		dwStyle=WS_OVERLAPPEDWINDOW;										// Windows Style
	}																		
																			
	AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle);				// Adjust Window To True Requested Size
																			
	////=========START The OPEN GL Window============////
	if (!(hWnd=CreateWindowEx(	dwExStyle,									// Extended Style For The Window
								"OP GL render screen",						// Class Name
								title,										// Window Title
								dwStyle |									// Defined Window Style
								WS_CLIPSIBLINGS |							// Required Window Style
								WS_CLIPCHILDREN,							// Required Window Style
								0, 0,										// Window Position
								WindowRect.right-WindowRect.left,			// Calculate Window Width
								WindowRect.bottom-WindowRect.top,			// Calculate Window Height
								NULL,										// No Parent Window
								NULL,										// No Menu
								hInstance,									// Instance
								NULL))										// Dont Pass Anything To WM_CREATE
								||
	////=========START The FPS box===================////
		!(hDLGWnd=CreateDialog(hInstance,
								MAKEINTRESOURCE(IDD_USERBAR),
								hWnd,
								DialogProc))
								
			)																
	//=================================================//
	{
		KillGLWindow();														// Reset The Display
		MessageBox(NULL,"Window Creation Error.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;														// Return FALSE
	}																		

	

	static	PIXELFORMATDESCRIPTOR pfd=										// pfd Tells Windows How We Want Things To Be
	{																		
		sizeof(PIXELFORMATDESCRIPTOR),										// Size Of This Pixel Format Descriptor
		1,																	// Version Number
		PFD_DRAW_TO_WINDOW |												// Format Must Support Window
		PFD_SUPPORT_OPENGL |												// Format Must Support OpenGL
		PFD_GENERIC_ACCELERATED |
		PFD_DOUBLEBUFFER,													// Must Support Double Buffering
		PFD_TYPE_RGBA,														// Request An RGBA Format
		bits,																// Select Our Color Depth
		0, 0, 0, 0, 0, 0,													// Color Bits Ignored
		0,																	// No Alpha Buffer
		0,																	// Shift Bit Ignored
		0,																	// No Accumulation Buffer
		0, 0, 0, 0,															// Accumulation Bits Ignored
		16,																	// 16Bit Z-Buffer (Depth Buffer)  
		0,																	// No Stencil Buffer
		0,																	// No Auxiliary Buffer
		PFD_MAIN_PLANE,														// Main Drawing Layer
		0,																	// Reserved
		0, 0, 0																// Layer Masks Ignored
	};																		
																			
	if (!(hDC=GetDC(hWnd)))													// Did We Get A Device Context?
	{																		
		KillGLWindow();														// Reset The Display
		MessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;														// Return FALSE
	}																		
																			
	if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd)))							// Did Windows Find A Matching Pixel Format?
	{																		
		KillGLWindow();														// Reset The Display
		MessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;														// Return FALSE
	}																		
																			
	if(!SetPixelFormat(hDC,PixelFormat,&pfd))								// Are We Able To Set The Pixel Format?
	{																		
		KillGLWindow();														// Reset The Display
		MessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;														// Return FALSE
	}																		
																			
	if (!(hRC=wglCreateContext(hDC)))										// Are We Able To Get A Rendering Context?
	{																		
		KillGLWindow();														// Reset The Display
		MessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;														// Return FALSE
	}																		
																			
	if(!wglMakeCurrent(hDC,hRC))											// Try To Activate The Rendering Context
	{																		
		KillGLWindow();														// Reset The Display
		MessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;														// Return FALSE
	}																		
																			
	ShowWindow(hWnd,SW_SHOW);												// Show The Window
	SetForegroundWindow(hWnd);												// Slightly Higher Priority
	SetFocus(hWnd);															// Sets Keyboard Focus To The Window

	if (!InitGL())															// Initialize Our Newly Created GL Window
	{																		
		KillGLWindow();														// Reset The Display
		MessageBox(NULL,"Initialization Failed.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;														// Return FALSE
	}																		
	
	ReSizeGLScene(width, height);											// Set Up Our Perspective GL Screen																		

	return TRUE;															// Success
}





//==============================================================================================================
//////////////////////////////////////////////////////////////////////////////
// Kill The OpenGL Window
//////////////////////////////////////////////////////////////////////////////
GLvoid KillGLWindow(GLvoid)													// Properly Kill The Window
{																			
	if (fullscreen)															// Are We In Fullscreen Mode?
	{																		
		ChangeDisplaySettings(NULL,0);										// If So Switch Back To The Desktop
		ShowCursor(TRUE);													// Show Mouse Pointer
	}																		
																			
	if (hRC)																// Do We Have A Rendering Context?
	{																		
		if (!wglMakeCurrent(NULL,NULL))										// Are We Able To Release The DC And RC Contexts?
		{
			MessageBox(NULL,"Release Of DC And RC Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
		}

		if (!wglDeleteContext(hRC))											// Are We Able To Delete The RC?
		{
			MessageBox(NULL,"Release Rendering Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
		}
		hRC=NULL;															// Set RC To NULL
	}

	if (hDC && !ReleaseDC(hWnd,hDC))										// Are We Able To Release The DC
	{
		MessageBox(NULL,"Release Device Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
		hDC=NULL;															// Set DC To NULL
	}

	if (hDLGWnd && ! DestroyWindow(hDLGWnd))
	{
		MessageBox(NULL,"Could Not Release hDLGWnd.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
		hDLGWnd=NULL;														// Set hDLGWnd To NULL
	}


	if (hWnd && !DestroyWindow(hWnd))										// Are We Able To Destroy The Window?
	{
		MessageBox(NULL,"Could Not Release hWnd.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
		hWnd=NULL;															// Set hWnd To NULL
	}

	if (!UnregisterClass("OP GL render screen",hInstance))					// Are We Able To Unregister Class
	{
		MessageBox(NULL,"Could Not Unregister Class.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
		hInstance=NULL;														// Set hInstance To NULL
	}

}

//==============================================================================================================

⌨️ 快捷键说明

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