我有一个游戏(DNF),它在xp下时的窗口很小,我想把它变大。昨天我在vc那里问了,不过好像我没说清楚,他们说用
FindWindow
或者
WindowFromPoint
函数先找到游戏窗口的句柄
然后用
SetWindowPos
改变大小。
我找到句柄后,发现SetWindowPos只能改变大小,如果你吧游戏窗口变大,多出来的部分是空白的。
请问用什么函数是改变游戏窗口分辨率的?
我搜了半天,很多帖子只是改变整个桌面的分辨率,我用不上的。
谁知道怎么结局,最好能给个函数的例子。
谢谢了。

解决方案 »

  1.   

    Private Declare Function lstrcpy Lib "kernel32" Alias _
      "lstrcpyA" (lpString1 As Any, lpString2 As Any) As LongConst CCHDEVICENAME = 32
    Const CCHFORMNAME = 32Private Type DEVMODE
      dmDeviceName As String * CCHDEVICENAME
      dmSpecVersion As Integer
      dmDriverVersion As Integer
      dmSize As Integer
      dmDriverExtra As Integer
      dmFields As Long
      dmOrientation As Integer
      dmPaperSize As Integer
      dmPaperLength As Integer
      dmPaperWidth As Integer
      dmScale As Integer
      dmCopies As Integer
      dmDefaultSource As Integer
      dmPrintQuality As Integer
      dmColor As Integer
      dmDuplex As Integer
      dmYResolution As Integer
      dmTTOption As Integer
      dmCollate As Integer
      dmFormName As String * CCHFORMNAME
      dmUnusedPadding As Integer
      dmBitsPerPel As Integer
      dmPelsWidth As Long
      dmPelsHeight As Long
      dmDisplayFlags As Long
      dmDisplayFrequency As Long
    End TypePrivate Declare Function ChangeDisplaySettings Lib "User32" _
      Alias "ChangeDisplaySettingsA" (ByVal lpDevMode As Long, _
      ByVal dwflags As Long) As Long
     
    '函数
    Public Function SetDisplayMode(Width As Integer, _
      Height As Integer, Color As Integer) As Long
      Const DM_PELSWIDTH = &H80000
      Const DM_PELSHEIGHT = &H100000
      Const DM_BITSPERPEL = &H40000
      Dim NewDevMode As DEVMODE
      Dim pDevmode As Long
      With NewDevMode
       .dmSize = 122
       If Color = -1 Then
         .dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
       Else
         .dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_BITSPERPEL
       End If
       .dmPelsWidth = Width
       .dmPelsHeight = Height
       If Color <> -1 Then
         .dmBitsPerPel = Color
       End If
      End With
      pDevmode = lstrcpy(NewDevMode, NewDevMode)
      SetDisplayMode = ChangeDisplaySettings(pDevmode, 0)
    End Function例子调用:改变为 640x480x24位:
    i = SetDisplayMode(640, 480, 24)
    如果成功返回 0 。
      

  2.   

    你没理解楼主的意思
    他要的是改变应用程序窗口的大小,并且程序中的各个控件位置、大小要协调
    我觉得应该根据屏幕大小按比例设置top,left等属性
      

  3.   

    不过即使按比例设置Width等属性,字体的大小这么办?也设置?
    那要写很多代码,又没有多大意义
      

  4.   

    2楼的答案好像不是我要的,
    我说明白点,
    比如说大家在玩qq台球,我打开了qq台球的游戏界面,那个界面里面只能设置分辨率是640*480,这时候我启动另一个程序(自己编写的),启动后,qq台球的游戏界面就变成800*600了,
    能不能实现?