动态调整显示器的分辨率(100分)

  • 主题发起人 主题发起人 wengabd
  • 开始时间 开始时间
W

wengabd

Unregistered / Unconfirmed
GUEST, unregistred user!
我通过调用以下函数来动态调整显示器的分辨率, 但是调用成功后,任务栏不是丢失
就是跑到屏幕中间(系统默认分辨率为800*600,改为1024*768时,任务栏跑到中间,
当系统默认分辨率为1024*768时,改为800*600时,任务栏丢失。默认分辨率是批我在
windows中手动调整的),怎样解决这一问题?请高手指点!
function DynamicResolution(X, Y: word): BOOL;
var
; ; lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
; ; begin
; ; lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
; ; lpDevMode.dmPelsWidth := X;
; ; lpDevMode.dmPelsHeight := Y;
; ; Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
; ;end;
end;
 
我也遇到同相问题﹐但这对我的程序不是很重要﹐故没有去解决它。呵呵
努力吧﹐相信自己﹐相信delphi﹐相信DFW﹐一定可以解决的﹗﹗
 
呵呵
不用解决 算了吧
 
什么乱七八糟的???

Result:=ChangeDisplaySettings(DevMode,CDS_UPDATEREGISTRY)=DISP_CHANGE_SUCCESSFUL
 
我这样实现了,只是....,你看吧。
function DynamicResolution(X, Y: word): BOOL;
var
; ; lpDevMode: TDeviceMode;
; ; hwndShell:Thandle;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
; ; begin
; ; lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
; ; lpDevMode.dmPelsWidth := X;
; ; lpDevMode.dmPelsHeight := Y;
; ; Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
; ;end;

; ; hwndShell := FindWindow('Progman', nil);
; ; PostMessage(hwndShell, WM_QUIT, 0, 0);
; ; WinExec('Explorer.exe',SW_SHOW);


end;
 
多人接受答案了。
 
后退
顶部