游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2572|回复: 3

请问怎么让游戏以窗口模式运行 ~~~

[复制链接]

100

主题

177

帖子

183

积分

注册会员

Rank: 2

积分
183
发表于 2005-11-28 14:46:00 | 显示全部楼层 |阅读模式
有些游戏有这样的设置工具 而大多数是没有的 也有人能做出来
这个是根据什么原理办到的啊 知道的说一下吧
谢谢了 ~~~

5

主题

217

帖子

222

积分

中级会员

Rank: 3Rank: 3

积分
222
发表于 2005-11-29 12:39:00 | 显示全部楼层

Re:请问怎么让游戏以窗口模式运行 ~~~

晕。。没听说有人做这种工具.
如果可以的话,运行游戏时加一个参数就可以达到的事情,为什么还费尽心思写工具?
-window

0

主题

46

帖子

46

积分

注册会员

Rank: 2

积分
46
发表于 2005-11-30 10:04:00 | 显示全部楼层

Re:请问怎么让游戏以窗口模式运行 ~~~

DDraw:
lpDD->SetCooperativeLevel(hWnd, DDSCL_NORMAL);

D3D:
D3DPRESENT_PARAMETERS d3dpp;
d3dpp.Windowed = TRUE;

20

主题

136

帖子

172

积分

注册会员

Rank: 2

积分
172
发表于 2005-11-30 10:32:00 | 显示全部楼层

Re:请问怎么让游戏以窗口模式运行 ~~~

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

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 19:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表