D3D之2D游戏编程(二)——游戏主窗口

本文介绍了如何在不使用GUI框架如WTL或MFC的情况下,构建一个适用于2D游戏开发的简单Win32程序框架。主要内容包括创建游戏主窗口、实现消息循环以及FPS计算。通过定义窗口回调函数和消息处理,演示了如何初始化窗口、运行消息循环以及进行渲染回调。代码简洁明了,易于理解和复用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在开始写游戏相关的代码之前,我们需要实现Win32程序的大体框架,其中最重要的是主窗口和消息循环。我不打算使用诸如WTL,MFC之类的GUI框架,在游戏编程中,这些框架除了增加复杂性之外并没有太大好处。最明智的做法是自己写一个简单但适合于游戏开发的视窗框架。我接下来将会实现它,这个框架用到代码非常的少,甚至没有类的存在,但它的确满足要求了。最重要的一点是,它非常容易理解。

创建工程

用VS创建一个Win32工程,工程文件结构大致是这样的:
- main/
    App.cpp
- lib/
    Commons.h
    WindowFrame.h
    WindowFrame.cpp
App.cpp 是程序的主执行流程。
Commons.h 用于存放公共的类型声明和辅助函数,以后会逐步丰富这个头文件的代码。
WindowFrame.h/cpp 实现下面的功能:
  • 一个顶层窗口
  • 一个消息循环
  • FPS计算
后面给出的Demo下载就可以看到全貌了。

创建窗口

创建窗口的代码包装成一个函数,只需传递几个参数就可以把窗口创建并显示出来,下面是原代码:
BOOL InitWindow(LPCTSTR title, int clientWidth, int clientHeight, WINDOWPROC procWnd)
{
# define WND_CLASSNAME _T( "colin.windows.class")

    _WndProc = procWnd;

     // 注册窗口类
    WNDCLASSEX wcex;
    wcex.cbSize = sizeof(WNDCLASSEX); 
    wcex.style             = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc     = (WNDPROC)_WindowProc;
    wcex.cbClsExtra         = 0;
    wcex.cbWndExtra         = 0;
    wcex.hInstance         = ThisModuleHandle();
    wcex.hIcon             = NULL;
    wcex.hCursor         = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground     = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.lpszMe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值