【教程原文】:
在上一篇程序代码的基础上,这次我们将增加2个类: InputClass,键盘处理的代码将放在这个类里面,GraphicsClass类,D3D渲染的代码放在这个类里。增加这个两个类后,应用的程序的框架如下:

main.cpp代码如下:
#include "SystemClass.h" //应用程序入口main函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pScmdline, int iCmdshow)
{
SystemClass* System;
bool result;
// 创建一个system对象.
System = new SystemClass;
if(!System)
{
return 0;
} // 初始化以及运行system对象.
result = System->Initialize();
if(result)
{
System->Run();
} // 关闭以及释放system对象.
System->Shutdown();
delete System;
System = 0;
return 0;
} System Class类有点小变动,增加了两个成员变量m_Input,m_Graphics,分别处理输入和渲染的操作。
SystemClass.h代码如下:
#pragma once
//定义该宏能够减少windows头文件的大小,使编译器不编译一些不必要的文件,加快编译时间
#define WIN32_LEAN_AND_MEAN #include <windows.h>
#include "InputClass.h"
#include "GraphicsClass.h" class SystemClass
{
public:
SystemClass(void);
SystemClass(const SystemClass &);
~SystemClass(void); bool Initialize();
void Shutdown();
void Run(); LRESULT CALLBACK MessageHandler(HWND, UINT, WPARAM, LPARAM);
private:
bool Frame();
void InitializeWindows(int&, int&);
void ShutdownWindows(); LPCWSTR m_applicationName;
HINSTANCE m_hinstance;
HWND m_hwnd; //InputClass和GraphicsClass是SystemClass的两个成员变量
InputClass* m_Input;
GraphicsClass* m_Graphics;
}; //定义静态的回调函数以及应用程序句柄
//因为定义窗口类时候,必须指定窗口回调函数,所以我们用静态的回调函数WndProc
static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); static SystemClass* ApplicationHandle = 0;
SystemClass.cpp代码如下:
#include "SystemClass.h"
SystemClass::SystemClass(void)
{
m_Input = 0;
m_Graphics = 0;
} SystemClass::SystemClass(const SystemClass &)
{ } SystemClass::~SystemClass(void)
{
} //调用窗口初始化函数和其它一些类的初始化函数
bool SystemClass::Initialize()
{
int screenWidth = 0, screenHeight = 0; // 初始化窗口
InitializeWindows(screenWidth, screenHeight); //创建input对象处理键盘输入
m_Input = new InputClass;
if(!m_Input)
{
return false;
} // 初始化输入对象.
m_Input->Initialize(); // 创建图形对象,这个对象将渲染应用程序中的所有物体
I