如何在程序运行时改变显示器的分辨率?

解决方案 »

  1.   

    procedure NewScreenSize(W,H: Integer);
    var
      DevMode: TDevMode;
    begin
      if EnumDisplaySettings(nil,0,DevMode) then begin
        with DevMode do begin
          dmPelsWidth := W;
          dmPelsHeight := H;
          dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;    end;
        ChangeDisplaySettings(DevMode, 0);
      end;
    end;
      

  2.   

    procedure SetRes(XRes, YRes: DWord);
    var
     lpDevMode : TDeviceMode;
    begin
     EnumDisplaySettings(nil, 0, lpDevMode);
     lpDevMode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
     lpDevMode.dmPelsWidth:=XRes;
     lpDevMode.dmPelsHeight:=YRes;
     ChangeDisplaySettings(lpDevMode, 0);
    end;修改分辨率为800X600,可以这样写SetRes(800,600);
      

  3.   

    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
      

  4.   

    function Resolution(X,Y:word):boolean;
    //  然后在implementation段中写入如下代码:
      function Resolution(X,Y:word):boolean;
      var
      DevMode:TDeviceMode;
      begin
      Result:=EnumDisplaySettings(nil,0,DevMode);
      if Result then
      begin
      DevMode.dmFields:=DM_PELSWIDTH Or DM_PELSHEIGHT;
      DevMode.dmPelsWidth:=X;
      DevMode.dmPelsHeight:=Y;
      Result:=ChangeDisplaySettings(DevMode,0)=DISP_CHANGE_SUCCESSFUL;
      end;
      end;