显示器刷新频率问题及黑屏问题

wildhorsetlj 2004-10-19 07:06:33
最近修改一个程序,要求实现的结果是:
如果屏幕的分辨率不是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:wildhorsetlj@hotmail.com与我联系!
...全文
191 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wildhorsetlj 2004-11-06
  • 打赏
  • 举报
回复
等了这么久都没有很好的答案,自己还是结贴吧!不过,伤心之中!
wildhorsetlj 2004-10-20
  • 打赏
  • 举报
回复
to longtusoft 搜索了,但没有找到刷新率和任务栏同时解决的信息,
那位朋友熟悉,帮下忙!
longtusoft 2004-10-19
  • 打赏
  • 举报
回复
直接用API设置应该不会太难吧,你搜索一下以前的贴子!
jaspcloud 2004-10-19
  • 打赏
  • 举报
回复
帮UP一下
相关推荐
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2004-10-19 07:06
社区公告
暂无公告