📄 win32.cpp
字号:
#include "Win32.h"
#include "fGame.h"
CfGame *NewGame;
struct ApplicationData AppData;
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
BOOL InitWindow(HINSTANCE hInstance);
void SetGameWindowRect(int left,int top,int width,int height);
void SetGameWindowTittle(LPCSTR Tittle);
void SetGameWindowRect(int left,int top,int width,int height)
{
AppData.WndRect.left=left;
AppData.WndRect.top=top;
AppData.WndRect.right=left+width;
AppData.WndRect.bottom=top+height;
}
void SetGameWindowTittle(LPCSTR Tittle)
{
AppData.WndTittle=Tittle;
}
void TRACEINFO(char *szFormat)
{
MessageBox(AppData.hMainWnd,szFormat,"错误",MB_OK);
}
void OutPutError(HRESULT ddrval)
{
//MessageBox(AppData.hMainWnd,ErrorCode,"错误",MB_OK);
//LPCTSTR ErrorCode;
//TRACEINFO("DirectDraw error:--- ");
switch (ddrval)
{
case DDERR_ALREADYINITIALIZED:
TRACEINFO("DDERR_ALREADYINITIALIZED ");
break;
case DDERR_BLTFASTCANTCLIP:
TRACEINFO("DDERR_BLTFASTCANTCLIP ");
break;
case DDERR_CANNOTATTACHSURFACE:
TRACEINFO("DDERR_CANNOTATTACHSURFACE ");
break;
case DDERR_CANNOTDETACHSURFACE:
TRACEINFO("DDERR_CANNOTDETACHSURFACE ");
break;
case DDERR_CANTCREATEDC:
TRACEINFO("DDERR_CANTCREATEDC ");
break;
case DDERR_CANTDUPLICATE:
TRACEINFO("DDERR_CANTDUPLICATE ");
break;
case DDERR_CANTLOCKSURFACE:
TRACEINFO("DDERR_CANTLOCKSURFACE ");
break;
case DDERR_CANTPAGELOCK:
TRACEINFO("DDERR_CANTPAGELOCK ");
break;
case DDERR_CANTPAGEUNLOCK:
TRACEINFO("DDERR_CANTPAGEUNLOCK ");
break;
case DDERR_CLIPPERISUSINGHWND:
TRACEINFO("DDERR_CLIPPERISUSINGHWND ");
break;
case DDERR_COLORKEYNOTSET:
TRACEINFO("DDERR_COLORKEYNOTSET ");
break;
case DDERR_CURRENTLYNOTAVAIL:
TRACEINFO("DDERR_CURRENTLYNOTAVAIL ");
break;
case DDERR_DCALREADYCREATED:
TRACEINFO("DDERR_DCALREADYCREATED ");
break;
case DDERR_DIRECTDRAWALREADYCREATED:
TRACEINFO("DDERR_DIRECTDRAWALREADYCREATED ");
break;
case DDERR_EXCEPTION:
TRACEINFO("DDERR_EXCEPTION ");
break;
case DDERR_EXCLUSIVEMODEALREADYSET:
TRACEINFO("DDERR_EXCLUSIVEMODEALREADYSET ");
break;
case DDERR_GENERIC:
TRACEINFO("DDERR_GENERIC ");
break;
case DDERR_HEIGHTALIGN:
TRACEINFO("DDERR_HEIGHTALIGN ");
break;
case DDERR_HWNDALREADYSET:
TRACEINFO("DDERR_HWNDALREADYSET ");
break;
case DDERR_HWNDSUBCLASSED:
TRACEINFO("DDERR_HWNDSUBCLASSED ");
break;
case DDERR_IMPLICITLYCREATED:
TRACEINFO("DDERR_IMPLICITLYCREATED ");
break;
case DDERR_INCOMPATIBLEPRIMARY:
TRACEINFO("Incampatible Primary ");
break;
case DDERR_INVALIDCAPS:
TRACEINFO("DDERR_INVALIDCAPS ");
break;
case DDERR_INVALIDCLIPLIST:
TRACEINFO("DDERR_INVALIDCLIPLIST ");
break;
case DDERR_INVALIDDIRECTDRAWGUID:
TRACEINFO("DDERR_INVALIDDIRECTDRAWGUID ");
break;
case DDERR_INVALIDMODE:
TRACEINFO("DDERR_INVALIDMODE ");
break;
case DDERR_INVALIDOBJECT:
TRACEINFO("DDERR_INVALIDOBJECT ");
break;
case DDERR_INVALIDPARAMS:
TRACEINFO("DDERR_INVALIDPARAMS ");
break;
case DDERR_INVALIDPIXELFORMAT:
TRACEINFO("DDERR_INVALIDPIXELFORMAT ");
break;
case DDERR_INVALIDPOSITION:
TRACEINFO("DDERR_INVALIDPOSITION ");
break;
case DDERR_INVALIDRECT:
TRACEINFO("DDERR_INVALIDRECT ");
break;
case DDERR_INVALIDSURFACETYPE:
TRACEINFO("DDERR_INVALIDSURFACETYPE ");
break;
case DDERR_LOCKEDSURFACES:
TRACEINFO("DDERR_LOCKEDSURFACES ");
break;
// case DDERR_MOREDATA:
// TRACEINFO("DDERR_MOREDATA ");
// break;
case DDERR_NO3D:
TRACEINFO("DDERR_NO3D ");
break;
case DDERR_NOALPHAHW:
TRACEINFO("DDERR_NOALPHAHW ");
break;
case DDERR_NOBLTHW:
TRACEINFO("DDERR_NOBLTHW ");
break;
case DDERR_NOCLIPLIST:
TRACEINFO("DDERR_NOCLIPLIST ");
break;
case DDERR_NOCLIPPERATTACHED:
TRACEINFO("DDERR_NOCLIPPERATTACHED ");
break;
case DDERR_NOCOLORCONVHW:
TRACEINFO("DDERR_NOCOLORCONVHW ");
break;
case DDERR_NOCOLORKEY:
TRACEINFO("DDERR_NOCOLORKEY ");
break;
case DDERR_NOCOLORKEYHW:
TRACEINFO("no colorkey hardware ");
break;
case DDERR_NOCOOPERATIVELEVELSET:
TRACEINFO("DDERR_NOCOOPERATIVELEVELSET ");
break;
case DDERR_NODC:
TRACEINFO("DDERR_NODC ");
break;
case DDERR_NODDROPSHW:
TRACEINFO("DDERR_NODDROPSHW ");
break;
case DDERR_NODIRECTDRAWHW:
TRACEINFO("DDERR_NODIRECTDRAWHW ");
break;
case DDERR_NODIRECTDRAWSUPPORT:
TRACEINFO("DDERR_NODIRECTDRAWSUPPORT ");
break;
case DDERR_NOEMULATION:
TRACEINFO("DDERR_NOEMULATION ");
break;
case DDERR_NOEXCLUSIVEMODE:
TRACEINFO("DDERR_NOEXCLUSIVEMODE ");
break;
case DDERR_NOFLIPHW:
TRACEINFO("DDERR_NOFLIPHW ");
break;
case DDERR_NOGDI:
TRACEINFO("DDERR_NOGDI ");
break;
case DDERR_NOHWND:
TRACEINFO("DDERR_NOHWND ");
break;
case DDERR_NOMIPMAPHW:
TRACEINFO("DDERR_NOMIPMAPHW ");
break;
case DDERR_NOMIRRORHW:
TRACEINFO("DDERR_NOMIRRORHW ");
break;
case DDERR_NOOVERLAYDEST:
TRACEINFO("DDERR_NOOVERLAYDEST ");
break;
case DDERR_NOOVERLAYHW:
TRACEINFO("DDERR_NOOVERLAYHW ");
break;
case DDERR_NOPALETTEATTACHED:
TRACEINFO("DDERR_NOPALETTEATTACHED ");
break;
case DDERR_NOPALETTEHW:
TRACEINFO("DDERR_NOPALETTEHW ");
break;
case DDERR_NORASTEROPHW:
TRACEINFO("DDERR_NORASTEROPHW ");
break;
case DDERR_NOROTATIONHW:
TRACEINFO("DDERR_NOROTATIONHW ");
break;
case DDERR_NOSTRETCHHW:
TRACEINFO("DDERR_NOSTRETCHHW ");
break;
case DDERR_NOT4BITCOLOR:
TRACEINFO("DDERR_NOT4BITCOLOR ");
break;
case DDERR_NOT4BITCOLORINDEX:
TRACEINFO("DDERR_NOT4BITCOLORINDEX ");
break;
case DDERR_NOT8BITCOLOR:
TRACEINFO("DDERR_NOT8BITCOLOR ");
break;
case DDERR_NOTAOVERLAYSURFACE:
TRACEINFO("DDERR_NOTAOVERLAYSURFACE ");
break;
case DDERR_NOTEXTUREHW:
TRACEINFO("DDERR_NOTEXTUREHW ");
break;
case DDERR_NOTFLIPPABLE:
TRACEINFO("DDERR_NOTFLIPPABLE ");
break;
case DDERR_NOTFOUND:
TRACEINFO("DDERR_NOTFOUND ");
break;
case DDERR_NOTINITIALIZED:
TRACEINFO("DDERR_NOTINITIALIZED ");
break;
case DDERR_NOTLOCKED:
TRACEINFO("DDERR_NOTLOCKED ");
break;
case DDERR_NOTPAGELOCKED:
TRACEINFO("DDERR_NOTPAGELOCKED ");
break;
case DDERR_NOTPALETTIZED:
TRACEINFO("DDERR_NOTPALETTIZED ");
break;
case DDERR_NOVSYNCHW:
TRACEINFO("DDERR_NOVSYNCHW ");
break;
case DDERR_NOZBUFFERHW:
TRACEINFO("DDERR_NOZBUFFERHW ");
break;
case DDERR_NOZOVERLAYHW:
TRACEINFO("DDERR_NOZOVERLAYHW ");
break;
case DDERR_OUTOFCAPS:
TRACEINFO("DDERR_OUTOFCAPS ");
break;
case DDERR_OUTOFMEMORY:
TRACEINFO("Out of Memory ");
break;
case DDERR_OUTOFVIDEOMEMORY:
TRACEINFO("DDERR_OUTOFVIDEOMEMORY ");
break;
case DDERR_OVERLAYCANTCLIP:
TRACEINFO("DDERR_OVERLAYCANTCLIP ");
break;
case DDERR_OVERLAYCOLORKEYONLYONEACTIVE:
TRACEINFO("DDERR_OVERLAYCOLORKEYONLYONEACTIVE ");
break;
case DDERR_OVERLAYNOTVISIBLE:
TRACEINFO("DDERR_OVERLAYNOTVISIBLE ");
break;
case DDERR_PALETTEBUSY:
TRACEINFO("DDERR_PALETTEBUSY ");
break;
case DDERR_PRIMARYSURFACEALREADYEXISTS:
TRACEINFO("DDERR_PRIMARYSURFACEALREADYEXISTS ");
break;
case DDERR_REGIONTOOSMALL:
TRACEINFO("DDERR_REGIONTOOSMALL ");
break;
case DDERR_SURFACEALREADYATTACHED:
TRACEINFO("DDERR_SURFACEALREADYATTACHED ");
break;
case DDERR_SURFACEALREADYDEPENDENT:
TRACEINFO("DDERR_SURFACEALREADYDEPENDENT ");
break;
case DDERR_SURFACEBUSY:
TRACEINFO("DDERR_SURFACEBUSY ");
break;
case DDERR_SURFACEISOBSCURED:
TRACEINFO("DDERR_SURFACEISOBSCURED ");
break;
case DDERR_SURFACELOST:
TRACEINFO("DDERR_SURFACELOST ");
break;
case DDERR_SURFACENOTATTACHED:
TRACEINFO("DDERR_SURFACENOTATTACHED ");
break;
case DDERR_TOOBIGHEIGHT:
TRACEINFO("DDERR_TOOBIGHEIGHT ");
break;
case DDERR_TOOBIGSIZE:
TRACEINFO("DDERR_TOOBIGSIZE ");
break;
case DDERR_TOOBIGWIDTH:
TRACEINFO("DDERR_TOOBIGWIDTH ");
break;
case DDERR_UNSUPPORTED:
TRACEINFO("DDERR_UNSUPPORTED ");
break;
case DDERR_UNSUPPORTEDFORMAT:
TRACEINFO("DDERR_UNSUPPORTEDFORMAT ");
break;
case DDERR_UNSUPPORTEDMASK:
TRACEINFO("DDERR_UNSUPPORTEDMASK ");
break;
case DDERR_UNSUPPORTEDMODE:
TRACEINFO("DDERR_UNSUPPORTEDMODE ");
break;
case DDERR_VERTICALBLANKINPROGRESS:
TRACEINFO("DDERR_VERTICALBLANKINPROGRESS ");
break;
// case DDERR_VIDEONOTACTIVE:
// TRACEINFO("DDERR_VIDEONOTACTIVE ");
// break;
case DDERR_WASSTILLDRAWING:
TRACEINFO("DDERR_WASSTILLDRAWING ");
break;
case DDERR_WRONGMODE:
TRACEINFO("DDERR_WRONGMODE ");
break;
case DDERR_XALIGN:
TRACEINFO("DDERR_XALIGN ");
break;
default:
//TRACEINFO("Unknown return value ");
return;
}
PostQuitMessage(0);
}
BOOL InitWindow(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbClsExtra=0;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.cbWndExtra=0;
wcex.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcex.hCursor=LoadCursor(hInstance,IDI_APPLICATION);
wcex.hIcon=LoadIcon(hInstance,IDC_ARROW);
wcex.hIconSm=LoadIcon(hInstance,NULL);//?
wcex.hInstance=hInstance;
wcex.lpfnWndProc=(WNDPROC)WinProc;
wcex.lpszClassName="APIerApp";
wcex.lpszMenuName=NULL;
wcex.style=CS_HREDRAW | CS_VREDRAW|CS_DBLCLKS;
ATOM ss=RegisterClassEx(&wcex);
AppData.hMainWnd=CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,
"APIerApp",AppData.WndTittle,
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
AppData.WndRect.left,AppData.WndRect.top,
AppData.WndRect.right-AppData.WndRect.left,
AppData.WndRect.bottom-AppData.WndRect.top,
NULL,
(HMENU)NULL,
hInstance,
NULL);
DWORD x=GetLastError();
if(AppData.hMainWnd!=NULL)
{
ShowWindow(AppData.hMainWnd,1);
UpdateWindow(AppData.hMainWnd);
return TRUE;
}
else
{
return FALSE;
}
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)
{
MSG msg;
AppData.hInstance=hInstance;
InitGame();
if(!InitWindow(hInstance))
{
MessageBox(NULL,"创建窗口失败!","错误",MB_OK);
return 0L;
}
NewGame =new CfGame();
InitBMP();
/*if (!NewGame->InitWindow())
return FALSE;
if (!NewGame->InitDdraw())
return FALSE;*/
do
{
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&msg,NULL,0,0))
{
return msg.wParam;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else if(AppData.bActive)
{
// 游戏循环
if (!GameLoop())
{
GameOver();
PostQuitMessage(0);
return 0L;
}
}
else
{
WaitMessage();
}
}while(TRUE);
return msg.wParam;
}
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,
WPARAM wParam,LPARAM lParam )
{
DWORD X=GetLastError();
//if (hWnd!=hMainWnd)
//{
// MessageBox(NULL,"消息发送错误!","错误",MB_OK);
// return DefWindowProc(hWnd,message,wParam,lParam);
//}
//else
//{
switch(message)
{
case WM_KEYDOWN:
switch(wParam)
{
case VK_RETURN:
break;
}
case WM_ACTIVATEAPP:
if (wParam && GetActiveWindow()==AppData.hMainWnd)
{
SetActiveWindow(AppData.hMainWnd);
}
AppData.bActive = (GetActiveWindow()==hWnd)&& wParam;
break;
case WM_PAINT:
break;
case WM_CREATE:
break;
case WM_CLOSE:
break;
case WM_DESTROY:
GameOver();
delete NewGame;
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd,message,wParam,lParam);
//}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -