www.pudn.com > GameEngine_src.rar > WndMain.cpp


#include "CAppWnd.h" 
#include "WndMsg.h" 
#include "BaseUtil.h" 
 
 
 
extern CAppWnd	theAppWnd; 
 
 
bool g_IsActive = false;				//程序激活标志 
 
const char szWndName[] = "魔炼";			//窗口的标题 
 
///////////////////////////////////////////////////////////////// 
//程序入口函数 
///////////////////////////////////////////////////////////////// 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, 
				   LPSTR lpCmdLine, int nShowCmd ) 
{ 
	MSG msg; 
    g_IsActive = true; 
	ZeroMemory( &msg, sizeof(msg) ); 
	theAppWnd.SetHInstance( hInstance );						//设置程序实例 
 
 
	theAppWnd.CreateGameWnd( szWndName, 0 );		//创建窗口 
 
	if ( InitGraphics( theAppWnd.GetHWnd() ) == false )			 
	{ 
		OnQuit(); 
		//return -1; 
	} 
 
	PostMessage( theAppWnd.GetHWnd(), WM_SIZE, 0, 0 ); 
 
	while ( msg.message != WM_QUIT ) 
	{ 
		if ( g_IsActive )		//如果在激活状态 
		{ 
			if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) != NULL ) 
			{ 
				TranslateMessage( &msg ); 
				DispatchMessage( &msg ); 
			} 
			else 
			{ 
				Render();		//逻辑,渲染 
			} 
		} 
		else					//如果不在激活状态 
		{ 
			if ( GetMessage( &msg, NULL, NULL, NULL ) != NULL ) 
			{ 
				TranslateMessage( &msg ); 
				DispatchMessage( &msg ); 
			} 
		} 
	} 
 
	return msg.wParam; 
} 
 
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) 
{ 
	switch ( msg ) 
	{ 
	//case WM_CREATE: 
		//break; 
 
	case WM_ACTIVATE: 
		WINDOWPLACEMENT wp; 
 
		if ( wParam == WA_ACTIVE ) 
		{ 
			ActiveWnd(); 
		} 
		else if ( wParam != WA_ACTIVE ) 
		{ 
			wp.length = sizeof(wp); 
			GetWindowPlacement( hwnd, &wp ); 
 
			if (  wp.showCmd == SW_SHOWMINIMIZED ) 
			{ 
				InactiveWnd(); 
			} 
		} 
 
		break; 
 
	case WM_SETFOCUS: 
		if ( lParam == 0x0000 || wParam == 0x0000 ) 
		{ 
			ActiveWnd(); 
		} 
		break; 
 
	//case WM_PAINT: 
		//break; 
 
	case WM_MOVE: 
		OnWndMove( hwnd, wParam, lParam ); 
		return 0; 
 
	case WM_SIZE: 
		if( SIZE_MAXHIDE==wParam || SIZE_MINIMIZED==wParam ) 
			InactiveWnd(); 
		else 
			ActiveWnd(); 
		break; 
 
	//case WM_LBUTTONDOWN: 
		//OnLMouseDown( hwnd, wParam, lParam ); 
		//return 0;	 
 
	//case WM_LBUTTONUP:	//鼠标左击 
		//OnLMouseUp( wParam ); 
		//return 0; 
 
	//case WM_RBUTTONDOWN:	//捕获鼠标点击 
	//	OnRMouseDown( hwnd, wParam, lParam ); 
		//return 0; 
 
	//case WM_RBUTTONUP:	 
		//OnRMouseUp(); 
		//return 0; 
 
	//case WM_MOUSEMOVE: 
		//OnMouseMove(); 
		//return 0; 
 
	//case 0x020A:			//鼠标滚轮消息 
		//OnMouseWheel( wParam ); 
		//return 0; 
 
	case WM_DESTROY:			//关闭窗口 
		OnQuit(); 
		return 0; 
		 
	//case WM_KEYDOWN:    //捕获按键消息 
		//OnKeyDown( wParam ); 
		//return 0; 
		 
	//case WM_COMMAND: 
		//OnGUIItem( hwnd, msg, wParam, lParam ); 
		//return 0; 
 
	//case WM_HSCROLL: 
		//OnScrollBar( wParam ); 
		//return 0; 
	} 
 
	return DefWindowProc( hwnd, msg, wParam, lParam ); 
}