📄 gameapp.cpp
字号:
#include "stdafx.h"
#include "RESOURCE.h"
#include "game.h"
#include "define.h"
//Global Variables
HINSTANCE hInst;
HWND hMainWnd;
TCHAR szTitle[MAX_LOADSTRING];
TCHAR szWindowClass[MAX_LOADSTRING];
/*/唯一的全局变量,游戏对象:/*/
CGame game;
/*/-/*/
//Forward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE,int);
LRESULT CALLBACK GameProc(HWND,UINT,WPARAM,LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdline,
int nCmdShow
)
{
MSG msg;
HACCEL hAccelTable;
//PAINTSTRUCT ps;
DWORD dwOldTime=0,//timeGetTime(),//时间控制;
dwNewTime;
//Initialize global strings:
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_WNDCLASS_NAME,szWindowClass,MAX_LOADSTRING);
//Register application instance:
MyRegisterClass(hInstance);
//Perform application initialization:
if(!InitInstance(hInstance,nCmdShow))return false;
hAccelTable=LoadAccelerators(hInstance,(LPCTSTR)IDC_DDRAW01);
//BeginPaint(hMainWnd,&ps);//准备好画图环境。
//Main message loop:
while(true)
{
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&msg,NULL,0,0))return msg.wParam;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
if(game.m_bActive&&(!game.m_bPaused))
{
dwNewTime=timeGetTime();
if((dwNewTime-dwOldTime)>=game.m_nSpeed)
{
game.Run(msg);
dwOldTime=dwNewTime;
}
}
else
{
WaitMessage();
}
//game.m_MESSAGE=msg; //以后改用钩子,快。put those message information into globalvar g_msgMyMessage;
}//End Main Message loop;
//EndPaint(hMainWnd,&ps);//还原画图环境。
return msg.wParam;
}
///////////////////////////////////////////////////////////////////////
//Function MyRegisterClass:
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASS wc;
wc.style =CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc =(WNDPROC)GameProc;
wc.cbClsExtra =0;
wc.cbWndExtra =0;
wc.hInstance =hInstance;
wc.hIcon =LoadIcon(hInstance,(LPCTSTR)IDI_DDRAW01);
wc.hCursor =LoadCursor(NULL,NULL);
wc.hbrBackground=NULL;
wc.lpszMenuName =szWindowClass;
wc.lpszClassName=szWindowClass;
return RegisterClass(&wc);
}
///////////////////////////////////////////////////////////////////////
//fuction InitInstance(HANDLE,int)
BOOL InitInstance(HINSTANCE hInstance,int nCmdShow)
{
HWND hwnd;
hInst=hInstance;
hwnd=CreateWindowEx(WS_EX_TOPMOST,
szWindowClass,
szTitle,
WS_POPUP,
0,0,
GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CXSCREEN),
NULL,NULL,
hInstance,
NULL);
if(!hwnd)return false;
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
hMainWnd=hwnd;
//声音文件录入:
int nSoundNum[DSOUND_MAX_NUM]={0};
LPCSTR szWaves[STAGE_MAX_NUM][DSOUND_MAX_NUM];//={""};
//szWaves[0][0]=(LPTSTR)IDR_WAVE_MAIN;//"main.wav";
//szWaves[0][1]=(LPTSTR)IDR_WAVE_FIRE_BH;//"fireBH.wav";
//szWaves[0][2]=(LPTSTR)IDR_WAVE_DYING;//"dying.wav";
szWaves[0][0]="sound//main.wav";
szWaves[0][1]="sound//fireBH.wav";
szWaves[0][2]="sound//dying.wav";
nSoundNum[0]=3;
////
//szWaves[1][0]=(LPTSTR)IDR_WAVE_FIRE_BH;//"fireBH.wav";
szWaves[1][0]="sound//fireBH.wav";
nSoundNum[1]=1;
//szWaves[2][0]=(LPTSTR)IDR_WAVE_MAIN;//"main.wav";
szWaves[2][0]="sound//main.wav";
nSoundNum[2]=1;
////
//Initialize Game Objects:
if(!game.Initialize(hwnd,(LPTSTR)IDB_BEGIN,szWaves,nSoundNum,3))return false;
return true;
}
///////////////////////////////////////////////////////////////////////
//Function GameProc(HWND,unsigned,WORD,LONG)
LRESULT CALLBACK GameProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
//static BYTE phase;
PAINTSTRUCT ps;
switch(message)
{
case WM_ACTIVATEAPP:game.m_bActive=wParam;
if(game.m_bActive)
{
if(game.m_DI.m_lpDID_Mouse)game.m_DI.m_lpDID_Mouse->Acquire();
if(game.m_DI.m_lpDID_Keyboard)game.m_DI.m_lpDID_Keyboard->Acquire();
}
else
{
if(game.m_DI.m_lpDID_Mouse)game.m_DI.m_lpDID_Mouse->Unacquire();
if(game.m_DI.m_lpDID_Keyboard)game.m_DI.m_lpDID_Keyboard->Unacquire();
}
break;
case WM_CREATE:break;
case WM_SETCURSOR:SetCursor(NULL);
return true;
case WM_PAINT:BeginPaint(hWnd,&ps);
EndPaint(hWnd,&ps);
break;
case WM_KEYDOWN:switch(wParam)
{
case VK_F2:if(game.m_bPaused)game.m_bPaused=false;
else game.m_bPaused=true;
break;
case VK_ESCAPE:if(game.m_pBeginPage!=NULL||game.m_pScorePage!=NULL)PostMessage(hWnd,WM_CLOSE,0,0);break;
case VK_F12:PostMessage(hWnd,WM_CLOSE,0,0);break;
}//end switch(wParam)
break;
case WM_DESTROY:game.Destroy();
PostQuitMessage(0);
break;
default:return DefWindowProc(hWnd,message,wParam,lParam);
}
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -