在项目目录下新建 Platform 文件夹用于编写不同平台的代码(虽然我只打算写windows下的,不过将来万一呢...)
在Platform下创建 Windows 文件夹,代码都放在这个下面。
图形模块由于初衷还是课程设计,所以用Dx11编写。项目结构会参考Dx11龙书以及博客园@X-Jun的文章。
这里创建了一个类 WindowsApp。
class WindowsApp {
public:
WindowsApp( HINSTANCE hInstance ); //构造函数,注意要在初始化列表中设置好参数,不然会链接错误。
virtual ~WindowsApp();
virtual LRESULT MsgProc( HWND hWND, UINT msg, WPARAM wParam, LPARAM lParam ); //消息处理的回调函数,这个函数的用处在cpp里面
virtual bool Init(); //初始化函数,在WinMain入口中调用以初始化
virtual void OnResize(); //窗口大小更新时调用
HINSTANCE AppInst() const; //获取应用实例句柄,子类通过此函数获取句柄
HWND MainWnd() const; //获取主窗口句柄,子类用
float AspectRatio() const; //获取屏幕宽高比,子类用
protected:
bool InitMainWindow(); //窗口初始化
bool InitDirect3D(); //D3D初始化
void CalculateFrameStats(); //计算每秒帧数并在窗口显示
protected:
HINSTANCE m_hAppInst; //应用实例句柄
HWND m_hMainWnd; //主窗口句柄
bool m_AppPaused; //应用是否暂停
//子类在构造函数更改这些参数
LPCWSTR m_MainWndCaption; //主窗口标题
int m_ClientWidth; //视口宽带
int m_ClientHeight; //视口高度
};
具体实现方法可以参考
github,需要注意的主要有两点:
WNDCLASSEX wc = {sizeof( wc )}; "
WNDCLASSEX.hIconSm必须设置的原因是,在你的程序中作为局部变量它的值是随意的,错误的值造成RegisterClassEx失败。(这里卡了好久还以为前面写错了)
参考文章:
原文:https://www.cnblogs.com/amaduse/p/10706616.html