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

📄 win32.cpp

📁 DirectX 封装
💻 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 + -