比如各种游戏的全屏窗口,怎么让它在非全屏方式下运行?我试了SetWindowPos没有用?
解决方案 »
- 自定义控件的问题SOS
- 请问如何实现在ie中打开word界面的功能,比如说我要在ie中打开写字板界面来显示txt文件
- 这个SQL语句应该如何写?急等
- 交换机定位
- 十万火急
- 请问:我在Myproject.cpp中定义的全局函数,为什么在其他类中不能使用
- 有谁知道,netmeeting中的自动接收呼叫怎么实现!高分!!!
- 谁能告诉我,如何为我在vc里用CString a;然后写a.后没有自动弹出的函数列表?
- 谁能把帮我在MDI or SDI标题栏上执行动画功能?
- IDL文件定义结构体或枚举,没有被后面的接口用到,编译后在TLB文件里没有生成结构体或枚举
- 如何响应对话框(非SDI)作为主框架失去焦点?
- 泡论坛的好处
游戏的全屏是设置程序的合作级别来实现的。
是独占的!不和其它程序共分内存的!
用SetCooperativeLevel(SafeHwnd,***)
*** = DDSCL_ALLOWMODEX--------全屏程序,并使用X-MODE
=FULLSCREEN---------------全屏程序
=EXCLUSIVE----------------独占程序, 让其它程序挂起。
如果你单纯用SetWindowPos是不可能做到的,
有些应用DirectX的游戏可以有窗口和全屏两种模式,在实现时程序员会在两种不同的模式下进行判断并且部分代码的实现是不同的
如 wubin_7841(wubin) 所述,
根据程序中 DirectDraw或Direct3D的协作级别与窗口相关联,它们在全屏和窗口模式下的实现是有区别的,而且DirectX是基于硬件抽象层的,所以他的窗口模式和Windows下的普通窗口是不同的,不要寄望于SetWindowPos之类的简单函数
DirectX是因为GUI不能有效的直接控制硬件、充分利用不同硬件的特性。(你不会容忍你的GF4 TI和别人的TNT2有一样的游戏表现吧)
因此需要一个称为DirectX的com组件来完成尽可能的直接对硬件的控制。
大部分的游戏是基于DirectX SDK的。(一套API)
如你能获得GAME的原代码,那你也不能只改SetCooperativeLevel,
因为合作级别的不同,后面的实现代码也会不同。