如何控制分辩率的大小。如当前为1024*768 改为800*600??

解决方案 »

  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;
    Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
    end
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if DynamicResolution(640, 480) then
    ShowMessage('Now is 640*480');
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    if DynamicResolution(800, 600) then
    ShowMessage('Now is 800*600');
    end;
      

  2.   

    function ChangeDisplay(WResolution, HResolution, Depth: DWORD) : Boolean;
    var
      i: Integer;
      DevMode: TDevMode;
    begin
      Result := False;
      i:=0;
      while EnumDisplaySettings(nil,i,DevMode) do begin
        with DevMode do begin
          if (dmPelsWidth = WResolution) and
             (dmPelsHeight = HResolution) and
             (dmBitsPerPel = Depth) then
            if ChangeDisplaySettings(DevMode,CDS_UPDATEREGISTRY) =
              DISP_CHANGE_SUCCESSFUL then begin
              Result := True;
              Break;
            end;
          Inc(i);
        end;
      end;
    end;