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

📄 main.cpp

📁 泡泡堂单机版,可能被转载够很多次,不过这个是比较完整的,一个很好的学习材料.
💻 CPP
字号:
#include "windows.h"

#include "game.h"

#include "stdio.h"
#include "mmsystem.h"

#pragma		comment(lib,"winmm.lib")

#define		WIDTH	800
#define		HEIGHT	600

CGame*		g_Game;

BOOL		g_bActive = FALSE;

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpszCommandLine, int cmdShow)
{
	char		ClassName[] = "bomb";
	char		WindowName[] = "泡泡堂";
	WNDCLASSEX	wc;
	HWND		hWnd;
	MSG			msg; 

	// 注册窗口类

	wc.cbClsExtra = 0;
	wc.cbSize = sizeof( WNDCLASSEX );
	wc.cbWndExtra = 0;
	wc.hbrBackground = ( HBRUSH ) GetStockObject( WHITE_BRUSH );
	wc.hCursor = (HCURSOR)LoadCursor(NULL,IDC_ARROW);
	wc.hIcon = NULL;
	wc.hIconSm = NULL;
	wc.hInstance = hInstance;
	wc.lpfnWndProc = WndProc;
	wc.lpszClassName = ClassName;
	wc.lpszMenuName = NULL;
	wc.style = CS_HREDRAW | CS_VREDRAW;
	RegisterClassEx( &wc );

	// 创建窗口

	hWnd = CreateWindow( ClassName, WindowName, WS_OVERLAPPEDWINDOW, 
		(GetSystemMetrics(SM_CXFULLSCREEN)-WIDTH)/2,
		(GetSystemMetrics(SM_CYFULLSCREEN)-HEIGHT)/2, WIDTH, HEIGHT, NULL, NULL, hInstance, NULL );

	// 显示窗口

	ShowWindow( hWnd, SW_SHOWDEFAULT );
	UpdateWindow( hWnd );

	ShowCursor(FALSE);
	//	初始化
	g_Game = new CGame;
	g_Game->Create(hWnd, hInstance);


	//	消息循环

	PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE);

	while(msg.message != WM_QUIT)
	{
		if(PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
		{
			//	处理消息
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		else if( g_bActive )
		{
			//	没有消息,处理场景

			g_Game->Run();
		}
	}

	delete	g_Game;

	UnregisterClass(ClassName,hInstance);

	return (int)msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	case WM_KEYDOWN:
		switch (wParam)
		{
		case	VK_ESCAPE:
			PostQuitMessage(0);
			break;
		default:
			break;
		}
	case WM_MOVE:
		if( g_Game )
			g_Game->m_pDraw->UpdateBounds();
		break;
	case WM_SIZE:
		if( SIZE_MAXHIDE==wParam || SIZE_MINIMIZED==wParam )
			g_bActive = FALSE;
		else
			g_bActive = TRUE;

		if( g_Game )
			g_Game->m_pDraw->UpdateBounds();
		break;
	case	WM_PAINT:
		if( g_Game )
			g_Game->Run();
		break;
	}
	return DefWindowProc(hWnd, message, wParam, lParam);
}

⌨️ 快捷键说明

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