资源简介
仿魔塔的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\ob
目录 0 2015-11-02 14:23 MagicTower-master\MagicTower\ob
文件 541 2015-11-02 14:23 MagicTower-master\MagicTower\ob
文件 505 2015-11-02 14:23 MagicTower-master\MagicTower\ob
文件 538 2015-11-02 14:23 MagicTower-master\MagicTower\ob
文件 511 2015-11-02 14:23 MagicTower-master\MagicTower\ob
文件 513 2015-11-02 14:23 MagicTower-master\MagicTower\ob
文件 499 2015-11-02 14:23 MagicTower-master\MagicTower\ob
文件 468 2015-11-02 14:23 MagicTower-master\MagicTower\ob
文件 451 2015-11-02 14:23 MagicTower-master\MagicTower\ob
............此处省略27个文件信息
- 上一篇:使用opengl画桌子+球+地板
- 下一篇:nginx-1.8.1.tar.gz
评论
共有 条评论