📄 winmain.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 + -