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 );
}