将DX+MFC,一般用来实现地图编辑器的效果,因为单纯使用DX+Win32来写地图编辑器框架需要做很多工作,而用MFC问题就简单化了,你所要做的就是在响应事件中编写代码。
首先我根据MFC的框架与消息传递路线(具体参见侯捷老师的深入浅出MFC),我们发现一个主窗体事实上管理一个当前激活窗口(View)的成员变量,而这个变量正是MFC用来分管渲染的对象(MFC著名的文档-视图模式,文档框架为用户提供数据管理,而视图框架为用户提供显示管理),在这个当前激活窗口中(View)中,我们发现包含了一个HWND句柄,这个句柄正是建立与初始化DX相关对象所必需的,因此我将DX模块的初始化与调用放在了自定义视图的类内。
在这里,我建议,将DX的所有方法在另一个DLL项目中建立,并生成链接库,便于MFC使用。
步骤一:
初始化DX相关对象,这一步需要参数是HWND与窗体的高宽,因此,可以在OnPaint消息响应函数中完成,因为在这里我们可以通过GetClientRect来确定窗口宽度。
步骤二:
选择1:
实时更新的游戏界面,这里我们需要重载PreTranslateMessage,函数,这个函数在每次分发消息时调用,为的就是每次都更新。
选择2:
如果你要做图片编辑器,那么不需要每次都更新窗体,只要在每一次响应键盘修改命令时更新就可以了,因此我们可以将更新放在OnKeyDown或者OnChar之类的消息响应函数中。
具体的效果,在未来几天做实验验证。
Enjoy!!