|
|
发表于 2005-11-30 10:32:00
|
显示全部楼层
Re:请问怎么让游戏以窗口模式运行 ~~~
|
窗口模式还要取得实际客户区的位置,设置640*480的游戏窗口的时候需要把父窗口的大小叠加上标题栏,边框的大小(用GetSystemMetrics(SM_*))。并且只能用blit不能用flip也不能直接在前台显示表面绘图,GetWindowRect(RECT* lpRect)之后还要修正窗口标题栏、边框(或许还有菜单项)占用的大小,最后才得出实际客户区,并且后缓冲表面的设置大小(比如backRect={0,0,640,480})要和实际客户区大小相等(而不是窗口大小)才不会造成画面失真。缩放窗口的时候因为blit的时候目标表面用的大小是实际客户区大小,所以游戏画面也会缩放,并不会出现不足或超过客户区的情况,但是直接在前表面绘图或者做锁定操作就会出问题。因此窗口化游戏一切绘图操作都必须在后表面进行。唉。 |
|