接下来是什么?¶
现在我已经展示了如何控制游戏的 Direct3D 设备,你可能想知道你能用它做什么。与本书其他示例不同,本节的代码和示例代码没有一对一的对应关系,但功能是相同的。以下是本章与 Chapter8_Direct3DHook 示例项目代码之间关联的高层视图。
文件 DirectXHookCallbacks.h 包含 EndScene() 和 Reset() 函数的回调、其他两个常见函数的回调,以及临时跳转钩子的蹦床和报告函数。这些函数与本章描述的基本一致,只是它们调用 DirectXHook.h 和 DirectXHook.cpp 中定义的单例类。这个单例类负责把调用转发给原始函数。
这个类还负责所有繁重的工作,包含创建发现设备、放置钩子、绘制文本、处理设备重置和显示图像的代码。此外,它允许外部代码为每个钩子添加自定义回调,正如你在 main.cpp 中看到的。在这里,你会看到许多不同的回调,它们绘制自定义文本、向屏幕添加新图像,以及更改游戏绘制的模型纹理。我建议翻翻代码以更好地理解正在发生的事情,但不要太过头。我们会在第 9 章深入这段代码,讨论它能做的所有酷炫破解。