最近修改一个程序,要求实现的结果是:
如果屏幕的分辨率不是800*600,则修改屏幕分辨率为800*600,程序结束后恢复初始设置最初时采用网上的方法,但发现分辨率是修改了,然而找不到任务栏,后来采用了下面的代码,修改分辨率和任务栏成功,但此时又出现的问题是:显示器的刷新频率改为了60赫兹,闪屏现象严重,另外,屏幕在切换分辨率时出现黑屏现象,这里有没有好的方法可以解决此问题。附代码如下:
library Project1;
uses
  Windows;function EnumDisplaySettingsM(lpszDeviceName: PChar; iModeNum: Integer;
    var lpDevMode: TDeviceMode): Integer; stdcall; external 'User32.DLL' name 'EnumDisplaySettingsA';
{$R *.res}function SetDisplayMode(X,Y:Word):Boolean;stdcall;  //修改分辨率和任务栏
var
  MyDisplayMode:TDeviceMode;
begin
  Result := EnumDisplaySettings(nil, 0,MyDisplayMode);
  if Result then
  begin
     MyDisplayMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
     MyDisplayMode.dmPelsWidth :=X;
     MyDisplayMode.dmPelsHeight :=Y;
     //MyDisplayMode.dmDisplayFrequency :=Z;
     Result := ChangeDisplaySettings(MyDisplayMode, 0) = DISP_CHANGE_SUCCESSFUL;
  end;
end;{$R *.res}  exports
     SetDisplayMode,SetDisplayFrequency;
begin
end.
那位朋友熟悉此种情况,希望能够帮忙!明天上班后得到答案即结贴!希望久违了的CSDN能够不负我的期望!在此祝各位友人好心情!好胃口!分不够的话朋友提出来,本人另外加分!
或msn:[email protected]与我联系!