请教关于一个分辨率的问题、谢谢!(20分)

  • 主题发起人 主题发起人 redhawk
  • 开始时间 开始时间
R

redhawk

Unregistered / Unconfirmed
GUEST, unregistred user!
我作的一个程序是在1024X768下完成的,但是别的程序要运行在800X600的分辨率下,我想在我的程序运行时,先读取当前的分辨率,在动态的设置分辨率为1024X768,在关闭程序时,在恢复以前的分辨率设置,该如何实现,谢谢!<br>分数不多,只有这么多了,感谢各位了!
 
CREATE时先读取SCREEN WIDTH &amp; HEIGHT,用1024X768比较当前电脑,如不同则用全局变量<br>存储,再用动态设置分辩率的代码修改成1024X768,关闭时再修改.
 
如何读取和设置?<br>谢谢!
 
读取<br><br>Function GetScreenSize(var Height,Width:integer):boolean;<br>var<br>x:longint;<br>a:string;<br>begin<br>result:= False;<br>Try<br>x := GetSystemMetrics(SM_CXSCREEN);<br>Str(x,a);<br>Width :=strtoint(a);<br>x := GetSystemMetrics(SM_CYSCREEN);<br>Str(x,a);<br>Height :=strtoint(a);<br>result:=true;<br>except<br>end;<br>end;<br><br>height 和width 就是
 
用EnumDisplaySettings() 和ChangeDisplaySettings()這兩個API函數<br>可以修改分辨率,刷新率。看一下SKD就知道了。<br>var<br>lpDevMode: TDeviceMode;<br>begin<br>Result := EnumDisplaySettings(nil, 0, lpDevMode);<br>if Result then<br>begin<br>lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;<br>lpDevMode.dmPelsWidth := X; //在這裡<br>lpDevMode.dmPelsHeight := Y;<br>Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;<br>end;<br>end;<br>
 
这样只能解决分辨率的问题啊?<br>那么刷新率的问题该怎么办??<br>
 
copy<br>动态调整显示器分辨率<br><br>  Delphi提供了可以动态改变屏幕分辨率的函数,分别是EnumDisplaySettings()和ChangeDisplaySettings()。有了它们,编程时可以随时改变分辨率以适应要求。下面的CRTReset函数能方便实现这一功能:<br><br>  implementation<br><br>  function CRTReset(X, Y: Word): Boolean;<br><br>  var<br><br>   lpDevMode: TDeviceMode;<br><br>  begin<br><br>   Result:= EnumDisplaySettings(nil, 0, lpDevMode); //获取显示模式<br><br>   if Result then begin<br><br>  lpDevMode.dmFields := DM_PELSWID<br><br>  TH Or DM_PELSHEIGHT;<br><br>  lpDevMode.dmPelsWidth := X;<br><br>  lpDevMode.dmPelsHeight := Y; //设置屏幕的宽度和高度<br><br>  Result:= ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;<br><br>   //改变屏幕分辨率并返回成功与否<br><br>  end;<br><br>  end;<br><br>  procedure TForm1.Button1Click(Sender: TObject);<br><br>  begin<br><br>  if CRTReset(800, 600) then ShowMessage('Now is 800*600'); //调用函数,设置分辨率为800×600<br><br>  end;<br>
 
同樣的API函數 lpDevMode.dmDisplayFrequency可修改刷新率,看一下DELPHI帶的SDK吧
 
谢谢各位,已搞定!
 
我用了上面的怎么老是报错啊!<br>不知那位可以把上面这段程序注释清楚撒!我是初学者啊
 
后退
顶部