www.gusucode.com > VC++游戏雷霆战机源代码-源码程序 > VC++游戏雷霆战机源代码-源码程序\code\Window.cpp

    // Window.cpp: implementation of the CWindow class.
// Download by http://www.NewXing.com
//////////////////////////////////////////////////////////////////////

#include "Window.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

BOOL CWindow::bActive = TRUE; 
CWindow::CWindow(HINSTANCE hInstance,int nCmdShow)
{
	m_instance = hInstance;
	m_CmdShow = nCmdShow;
}

CWindow::CWindow()
{

}

CWindow::~CWindow()
{

}

BOOL CWindow::InitApplication()
{
	WNDCLASS			wc;		
	//填充窗口类结构
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc =WinProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = m_instance;
    wc.hIcon = LoadIcon( m_instance, MAKEINTRESOURCE(IDI_ICON_FLY));
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );
    wc.hbrBackground = (HBRUSH )GetStockObject(BLACK_BRUSH);
	wc.lpszMenuName = NULL;
	wc.lpszClassName = GameTitle;

	//注册窗口类
    return (RegisterClass( &wc ));	
}

BOOL CWindow::InitInstance()
{
	//创建主窗口-(全屏)
	m_hwnd = CreateWindowEx(
			WS_EX_TOPMOST,
			GameTitle,
			GameTitle,
			WS_POPUP,	
			0,
			0,
			GetSystemMetrics(SM_CXSCREEN),
	        GetSystemMetrics(SM_CYSCREEN),
			NULL,
			NULL,
			m_instance,
			NULL);

    if( !m_hwnd )		
		return FALSE;

	//显示并更新窗口
    ShowWindow( m_hwnd, m_CmdShow );
    UpdateWindow( m_hwnd );
	ShowCursor(false);
	return (TRUE);
}

BOOL CWindow::Create()
{
	if(!InitApplication()) 
		return FALSE;
	if(!InitInstance())
		return FALSE;
	return TRUE;
}

LRESULT CALLBACK CWindow::WinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT		ps;
	HDC				hdc;
	switch( message )
	{
		case WM_ACTIVATEAPP:  //应用程序是否处于激活状态
			{
				bActive = wParam;
			}
			break;

		case WM_TIMER:	//定时器消息
			{
				return 0;
			}
			break;

		case WM_PAINT:		//在后台窗口模式时
			{
				hdc=BeginPaint(hwnd,&ps);
				EndPaint(hwnd,&ps);
				return 0;
			}
			break;

		case WM_DESTROY:	//退出消息
			{
				PostQuitMessage(0);
				return 0;
			}
			break;

		default:break;
    }
	
	//调用缺省消息处理过程
    return DefWindowProc(hwnd, message, wParam, lParam);
}

HWND CWindow::GetHwnd()
{
	return m_hwnd;
}