资源简介

仿魔塔的Win32小游戏,使用原生GDI作为图形绘制接口,代码经过重构可读性高,对于想要学习GDI的朋友来说是一份和好的参考资料。

资源截图

代码片段和文件信息

#include “resource.h“
#include “definitions.h“
#include “manager.h“
#include “map.h“
#include “window.h“
#include “general.h“
#include “editor.h“

HINSTANCE hIns;
TCHAR sztitle[100]; // 标题栏文本
TCHAR szWindowClass[100]; // 主窗口类名

Player *player;
Manager *manager;
MapManager *mm;
WindowManager *wm;
EditorManager *em;
WindowUpdator *windowUpdator;

ATOM MyRegisterClass(HINSTANCE);
BOOL InitInstance(HINSTANCE int);
LRESULT CALLBACK WindowProc(HWND UINT WPARAM LPARAM);
LRESULT CALLBACK FIGHT(HWND UINT WPARAM LPARAM);
LRESULT CALLBACK SHOP(HWND UINT WPARAM LPARAM);
LRESULT CALLBACK ABOUT(HWND UINT WPARAM LPARAM);
LRESULT CALLBACK EDITOR(HWND UINT WPARAM LPARAM);

int WINAPI WinMain(HINSTANCE hInstance HINSTANCE hPrevInstance LPSTR lpCmdLine int nCmdShow){
MSG msg;
hIns = hInstance;

mm = new MapManager;
windowUpdator = new WindowUpdator(hInstance);

LoadString(hInstance IDS_MAGICTOWER sztitle 100);
LoadString(hInstance IDS_MAGICTOWER szWindowClass 100);

MyRegisterClass(hInstance);

if (!InitInstance(hInstance nCmdShow))
return FALSE;

while (GetMessage(&msg NULL 0 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

ATOM MyRegisterClass(HINSTANCE hInstance){
WNDCLASSEX winclass;

winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hInstance;
winclass.hIcon = LoadIcon(NULL IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL IDC_ARROW);
winclass.hbrBackground = (HBRUSH)COLOR_WINDOW;
winclass.lpszMenuName = (LPCWSTR)IDR_MENU1;
winclass.lpszClassName = szWindowClass;
winclass.hIconSm = LoadIcon(NULL IDI_APPLICATION);

return RegisterClassEx(&winclass);
}

BOOL InitInstance(HINSTANCE hInstance int nCmdShow){
HWND hWnd;

int x = GetSystemMetrics(SM_CXSCREEN);
int y = GetSystemMetrics(SM_CYSCREEN);

hWnd = CreateWindowEx(NULL
szWindowClass
sztitle
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE
x / 2 - MAINWINDOW_WIDTH / 2
y / 2 - MAINWINDOW_HEIGHT / 2
MAINWINDOW_WIDTH
MAINWINDOW_HEIGHT
NULL NULL hInstance NULL);

if (!hWnd)
return FALSE;

ShowWindow(hWnd nCmdShow);
UpdateWindow(hWnd);

return TRUE;
}

LRESULT CALLBACK WindowProc(HWND hWnd UINT message WPARAM wParam LPARAM lParam){
PAINTSTRUCT ps;
HDC hDC hDCMem;
HBITMAP hOrgBmp hOldBmp;

switch (message){
case WM_CREATE:
//添加窗口句柄到窗口更新器中
windowUpdator->setHMainWindow(hWnd);
//初始化用来控制主窗口的Manager类
manager = new Manager(windowUpdator->getHIns() hWnd);
//初始化用来调用其它子窗口的WindowManager类
wm = new WindowManager(windowUpdator->getHIns() hWnd);
player = manager->getPlayer();
return 0;
case WM_PAINT:
hDC = BeginPaint(hWnd &ps);
//创建与当前DC兼容的内存DC
hDCMem = CreateCompatibleDC(hDC);
hOrgBmp = LoadBitmap(hIns MAKEINTRESOURCE(IDB_BACKGROUND));
//将该位图选入到内存DC中
hOldBmp = (HBITMAP)Selectobject(hDCMem hOrgBm

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-11-02 14:23  MagicTower-master\
     文件        2518  2015-11-02 14:23  MagicTower-master\.gitattributes
     文件        2806  2015-11-02 14:23  MagicTower-master\.gitignore
     文件        1730  2015-11-02 14:23  MagicTower-master\MagicTower.sln
     目录           0  2015-11-02 14:23  MagicTower-master\MagicTower\
     文件       12190  2015-11-02 14:23  MagicTower-master\MagicTower\MagicTower.vcxproj
     文件        4852  2015-11-02 14:23  MagicTower-master\MagicTower\MagicTower.vcxproj.filters
     文件       15818  2015-11-02 14:23  MagicTower-master\MagicTower\Resource.rc
     文件         778  2015-11-02 14:23  MagicTower-master\MagicTower\bitmap.h
     文件        1667  2015-11-02 14:23  MagicTower-master\MagicTower\definitions.h
     文件        4638  2015-11-02 14:23  MagicTower-master\MagicTower\editor.h
     文件        1722  2015-11-02 14:23  MagicTower-master\MagicTower\enemy.h
     文件        2663  2015-11-02 14:23  MagicTower-master\MagicTower\general.h
     文件        6459  2015-11-02 14:23  MagicTower-master\MagicTower\main.cpp
     文件        6720  2015-11-02 14:23  MagicTower-master\MagicTower\manager.h
     文件        2273  2015-11-02 14:23  MagicTower-master\MagicTower\map.h
     目录           0  2015-11-02 14:23  MagicTower-master\MagicTower\map\
     文件         267  2015-11-02 14:23  MagicTower-master\MagicTower\map\1.txt
     文件         260  2015-11-02 14:23  MagicTower-master\MagicTower\map\2.txt
     文件         271  2015-11-02 14:23  MagicTower-master\MagicTower\map\3.txt
     文件         273  2015-11-02 14:23  MagicTower-master\MagicTower\map\4.txt
     文件         798  2015-11-02 14:23  MagicTower-master\MagicTower\object.h
     目录           0  2015-11-02 14:23  MagicTower-master\MagicTower\objects\
     文件         541  2015-11-02 14:23  MagicTower-master\MagicTower\objects\bigmed.h
     文件         505  2015-11-02 14:23  MagicTower-master\MagicTower\objects\bluegem.h
     文件         538  2015-11-02 14:23  MagicTower-master\MagicTower\objects\door.h
     文件         511  2015-11-02 14:23  MagicTower-master\MagicTower\objects\downstairs.h
     文件         513  2015-11-02 14:23  MagicTower-master\MagicTower\objects\key.h
     文件         499  2015-11-02 14:23  MagicTower-master\MagicTower\objects\redgem.h
     文件         468  2015-11-02 14:23  MagicTower-master\MagicTower\objects\road.h
     文件         451  2015-11-02 14:23  MagicTower-master\MagicTower\objects\shop.h
............此处省略27个文件信息

评论

共有 条评论