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

📄 winmain.cpp

📁 diablo图形引擎例子
💻 CPP
字号:
/*			    Tao's 45 Engine 
说句实话:
	程序的算法是从Jim Adams 1996 年的 Isometric Views 一
文中来的,我自己的东西并不多,我当时得到这个比较实用的算法是非
常高兴的,觉得自己终于可以编个小游戏了,特别因为我喜欢Dialbo这
样的游戏,不过没有美工也却实是件可怕的事......
	这个程序有Alpha的代码,不过太慢了,我一直无法使他支持M
MX,唉!我的p54c(你不知道p54c p55c的区别?)...
	如果您改进了他或完善了,请给我一份好吗?让我们共同进步!
	
	
	                                 TAO
				http://fireice.yeah.net
				Antao@telekbird.com.cn
	       				1999.10.		*/

// 冰河工作室
// http://fireice.yeah.net


#include <windows.h>
#include <windowsx.h>
#include "WinMain.h"

#include "Engine.h"

/* Global variable defined -start */
WPARAM   bActive =TRUE; 
Engine * lpEngine=NULL;
/* Global variable defined -end   */

/////////////////////////////////////////////////////////////////////////////////////////////
//			 				 WinProc
/////////////////////////////////////////////////////////////////////////////////////////////
long PASCAL WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int dx,dy;
	switch(message)
	{
		case WM_ACTIVATEAPP:
			 bActive =wParam;
			break;
		case WM_CREATE:
			break;
		case WM_SETCURSOR:
			SetCursor(NULL);
			return true;
		case WM_KEYDOWN:
			switch(wParam)
			{
				case VK_ESCAPE:
					PostMessage(hWnd, WM_CLOSE, 0, 0);
					break;
			}
			break;
		
	    case WM_LBUTTONDOWN:
				//lpEClass->m_lpMapClass->OnLButtonDown(wParam,lParam);
				POINT pt;
				GetCursorPos(&pt);
				//reading mouse position
				dx=pt.x;
				dy=pt.y;
				lpEngine->m_lpMap->ConvertPosition(dx,dy);
				lpEngine->m_lpMap->m_lpCharactar->WalkTo(dx,dy);
				break;
		case WM_RBUTTONDOWN:
				//lpEClass->m_lpMapClass->OnLButtonDown(wParam,lParam);
				break;
		case WM_DESTROY:
				PostQuitMessage(0);
				break;
	}

	return DefWindowProc(hWnd, message, wParam, lParam);
}

/////////////////////////////////////////////////////////////////////////////////////////////
//								Initialize Appliction
/////////////////////////////////////////////////////////////////////////////////////////////
bool InitApp(HINSTANCE hInst, int nCmdShow)
{
	HWND hWnd;
	WNDCLASS WndClass;

	WndClass.style = CS_HREDRAW | CS_VREDRAW;
	WndClass.lpfnWndProc = WinProc;
	WndClass.cbClsExtra = 0;
	WndClass.cbWndExtra = 0;
	WndClass.hInstance = hInst;
	WndClass.hIcon =LoadIcon(hInst, IDI_APPLICATION);
	WndClass.hCursor = NULL;//LoadCursor(NULL, IDC_ARROW);
	WndClass.hbrBackground =NULL;//GetStockObject(WHITE_BRUSH);
	WndClass.lpszMenuName = NULL;
	WndClass.lpszClassName = "TestEngine99";
	RegisterClass(&WndClass);

#ifdef _DEBUG
	hWnd = CreateWindow(
		"TestEngine99",
		"Enging Test Progarm(-Debug) 0.01 - 冰河工作室制作",
 		WS_OVERLAPPED | WS_SYSMENU ,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		640,480,
		//GetSystemMetrics(SM_CXSCREEN),
		//GetSystemMetrics(SM_CYSCREEN),
		NULL, 
		NULL,
		hInst,
		NULL);
#else
	hWnd = CreateWindow(
		"TestEngine99",
		"Enging Test Program(-Release) 0.01 - 冰河工作室制作",
 		WS_POPUP,
		0,
		0,
		640,
		480,
		NULL, 
		NULL,
		hInst,
		NULL);
#endif
	if(!hWnd) return FALSE;

	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	// Initialize Engine Global Class instance -Start.....

	lpEngine=new Engine;
	lpEngine->Initialize(hWnd);


	// Initialize Engine Global Class instance -End.....

	return true;
}

/////////////////////////////////////////////////////////////////////////////////////////////
//				Windows Main Function
/////////////////////////////////////////////////////////////////////////////////////////////
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
	MSG msg;

	if(!InitApp(hInst, nCmdShow)) return FALSE;

	while(1)
	{
		if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
		{
			if(!GetMessage(&msg, NULL, 0, 0 )) return msg.wParam;
			TranslateMessage(&msg); 
			DispatchMessage(&msg);
		}
		else if(bActive)
		{
			lpEngine->UpdateFrame();
		}
		else WaitMessage();
	}
}



⌨️ 快捷键说明

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