比如各种游戏的全屏窗口,怎么让它在非全屏方式下运行?我试了SetWindowPos没有用?

解决方案 »

  1.   

    游戏的窗口和全屏还是有很大的不同的,这要游戏自身的支持,用setwindowpos这样的api是搞不定的~~~~
      

  2.   

    让程序全屏是不能用setwindowpos的。
    游戏的全屏是设置程序的合作级别来实现的。
    是独占的!不和其它程序共分内存的!
    用SetCooperativeLevel(SafeHwnd,***)
    *** = DDSCL_ALLOWMODEX--------全屏程序,并使用X-MODE
        =FULLSCREEN---------------全屏程序
        =EXCLUSIVE----------------独占程序,  让其它程序挂起。
      

  3.   

    你应该先弄清楚DirectX在窗口模式和全屏模式下的一些区别
    如果你单纯用SetWindowPos是不可能做到的,
    有些应用DirectX的游戏可以有窗口和全屏两种模式,在实现时程序员会在两种不同的模式下进行判断并且部分代码的实现是不同的
    如 wubin_7841(wubin) 所述,
    根据程序中 DirectDraw或Direct3D的协作级别与窗口相关联,它们在全屏和窗口模式下的实现是有区别的,而且DirectX是基于硬件抽象层的,所以他的窗口模式和Windows下的普通窗口是不同的,不要寄望于SetWindowPos之类的简单函数
      

  4.   

    楼上的把道理讲的已很清楚了,游戏对硬件能力的需要比较高,基本不能允许与其他软件分享硬件资源。
    DirectX是因为GUI不能有效的直接控制硬件、充分利用不同硬件的特性。(你不会容忍你的GF4 TI和别人的TNT2有一样的游戏表现吧)
    因此需要一个称为DirectX的com组件来完成尽可能的直接对硬件的控制。
    大部分的游戏是基于DirectX SDK的。(一套API)
    如你能获得GAME的原代码,那你也不能只改SetCooperativeLevel,
    因为合作级别的不同,后面的实现代码也会不同。