📄 mdgame_template.cpp
字号:
//
// Programed by Johnhans (C)2002 All Rights Reserved!
//
//
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include "MD_Engine.h"
#include "MD_Surface.h"
//--------------------------------------------------------------------
// 宏定义
//--------------------------------------------------------------------
#define NAME "Project Name"
//-----------------------------------------------------------------------------
// 全局变量
//-----------------------------------------------------------------------------
CMD_Engine Engine;
BOOL bActive; //程序是否挂起
bool RunGame=true; //程序运行中
bool InitEngine(HWND hWnd); //初始化引擎设备
void UpdateFrame();
//-----------------------------------------------------------------------------
// Name: WindowProc()
// Desc: 主窗口消息处理
//-----------------------------------------------------------------------------
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
switch( message )
{
case WM_ACTIVATE: //应用程序激活消息
if(LOWORD(wParam)==WA_INACTIVE)
bActive = false;
else if(HIWORD(wParam))
{
bActive = false;
return 0;
}
else
bActive = true;
return 0;
case WM_SYSKEYDOWN:
switch(wParam)
{
case VK_F4:
RunGame=false;
break;
case 18:
return 0;
}
break;
case WM_SETCURSOR:
SetCursor(LoadCursor(NULL, IDC_ARROW));
return TRUE;
case WM_SIZE:
case WM_MOVE:
Engine.CalcWindowPos();
break;
case WM_KEYDOWN: //击键消息
switch( wParam )
{
case VK_ESCAPE:
RunGame=false;
break;
case VK_F12: // 按F12键截图
Engine.SaveScreen("ScreenShot.bmp");
break;
}
break;
case WM_DESTROY: //销毁窗口消息
PostQuitMessage(0);
RunGame=false;
break;
}
//调用缺省的过程处理过程
return DefWindowProc(hWnd, message, wParam, lParam);
}
//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: 初始化, 消息循环
//-----------------------------------------------------------------------------
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG msg;
HWND hWnd;
WNDCLASSEX wcex={0};
//建立并注册窗口类
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WinProc;
wcex.hInstance=hInstance;
wcex.lpszClassName = NAME;
wcex.hbrBackground = (HBRUSH )GetStockObject(BLACK_BRUSH);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wcex);
//创建窗口
hWnd = CreateWindowEx(WS_EX_APPWINDOW,NAME,NAME,WS_OVERLAPPEDWINDOW | WS_VISIBLE,0,0,GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN)/2,NULL,NULL,hInstance,NULL);
if (!hWnd)
{
UnregisterClass(NAME,hInstance);
MessageBox(hWnd,"程序主框架创建失败!",NAME,MB_OK);
return FALSE;
}
if(!InitEngine(hWnd))
{
MessageBox(hWnd,"游戏引擎初始化失败!",NAME,MB_OK);
return false;
}
// Main message loop:
while(RunGame)
{
//如果有消息则截获它
if(PeekMessage(&msg,hWnd,0,0,PM_REMOVE))
{
if(msg.message == WM_QUIT)
RunGame=false;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else if(bActive)
{
UpdateFrame();
}
}
return msg.wParam;
}
bool InitEngine(HWND hWnd)
{
return true;
}
void UpdateFrame()
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -