可最小化全屏窗口的最佳方法

时间:2010-03-28 17:06:30

标签: c++ winapi

我正在使用C ++和Win32编写一个简短的游戏,我希望能够以固定大小全屏制作它。我还希望用户能够在游戏窗口和其他窗口之间切换焦点,而不需要任何奇怪的屏幕故障。

到目前为止,我知道ChangeDisplaySettings函数并在初始化时创建具有WS_POPUP样式的窗口以使其全屏显示。要通过alt + tab或其他方式检测用户将焦点切换到其他窗口,我应该在窗口WndProc上处理哪些消息,还是应该使用其他功能?如果检测到失去焦点,我应该只调用ChangeDisplaySettings(NULL, 0);还是还应该调用其他功能?我应该使用什么方法来将焦点重新放回窗口?

也可以向我提供一些有关如何使其在不同屏幕尺寸下平稳运行的信息吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果您想要一个专用的全屏窗口,请使用DirectX。

但我不推荐它。更改显示模式会导致毛刺,重新排列用户图标等。无论是由您完成,还是直接X.

而是在您的原生资源中创建一个普通窗口,并让用户在需要时最大化它。

答案 1 :(得分:0)

您还可以使用Windows XP(及更新版本)的GDI +库来使用硬件加速拉伸(在640x480中绘制,让GDI +将其调整为原始分辨率)。那么你不需要DirectDraw的独家模式,也不需要ChangeDisplaySettings。

同时绘制到640x480大背景缓冲区并通过StretchBlt在绘图表面上进行位图布局可能是一种高性能解决方案。