我用了以下函数修改了分辩率,但下面的状态条不跟着变,(例如从1024--800就看不见开始菜单项了)还需要怎么改才行?
function changedisplay(x,y :integer):boolean;
var
lpDevMode: TDeviceMode;
begin
if screen.Width<>x then
  if EnumDisplaySettings(nil, 0, lpDevMode) then
    begin
    lx:=screen.Width;
    lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
    lpDevMode.dmPelsWidth := x;
    lpDevMode.dmPelsHeight := y;
    ChangeDisplaySettings(lpDevMode, 0);
    end
  else
    result:=false
else
  result:=false;
end;

解决方案 »

  1.   

    你的通知注册表刷新!
    我的做法
    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;
        lpDevMode.dmDisplayFrequency := 75;//刷新率
         Result := ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL;
      //CDS_UPDATEREGISTRY  必须写,呵呵,要不就有你好看的(任务栏不变 )
      end;
      end;
    记得给分呀!