首先,我们先回顾下我上个博客,关于手动建立一个win32 窗口的博客,在这里,我再写一遍昨天的代码,并且在这里面加几个函数,关于windows窗口的建立这部分代码,注释我就不写了,只是为了展示我的几个函数所加的位置
本博客实例代码地址:http://download.csdn.net/detail/shangdi712/9052045
utility.h
//-------Windows头及库文件-------
#ifndef WINDOWS_PLATFORM_
#define WINDOWS_PLATFORM_
#include <Windows.h>
#include <mmsystem.h>
#pragma comment(lib,"Winmm.lib")
#endif
//-------D3D头及库文件-------
#ifndef D3D_USEFUL_H_
#define D3D_USEFUL_H_
#include <d3d9.h>
#pragma comment(lib,"d3d9.lib")
#include <d3dx9.h>
#pragma comment(lib,"d3dx9.lib")
#endif
//-------SAFE_DELETE_----------
#ifndef SAFE_DELETE_T_
#define SAFE_DELETE_T_
template<typename T>inline void Safe_Delete(T* & p)
{
if (p){ delete p; p = nullptr; }
}
template<typename T>inline void Safe_Release(T* & p)
{
if (p){ p->Release(); p = nullptr; }
}
#endif
这里稍微解释一下utility.h的代码,开始先引入window.h mmsystem.h两个头文件,和Winmm.lib 这个库的作用是为了生成windows窗口所用
之后引入directx 所需要的库和头文件
好了,重点来了,后面两个函数模板的作用是用来安全释放的,前一个用来释放普通指针,后一个用来释放directx定义的复杂指针,将安全释放的函数写成模板,之后随调随用,增强了代码的简洁性
好了,下面就是WinMain中的内容了
#include "Utility.h"
HWND g_hWnd = 0;
HINSTANCE g_hInstance = 0;
/*
绘图窗口改造的步骤:
1、包含头文件及库文件,见Utility.h文件
2、声明变量
3、创建D3D接口指针
4、创建D3D设备指针
5、创建Sprite精灵指针
6、改造onRender函数
*/
//COM:组件对象模型
LPDIRECT3D9 g_pD3D = nullptr; //D3D的接口指针,为了创建设备指针
LPDIRECT3DDEVICE9 g_pDevice = nullptr; //D3D的设备指针,为了创建精灵指针
LPD3DXSPRITE g_pSprite = nullptr; //D3D的精灵指针,为了画图
LRESULT CALLBACK