如何用API来获取当前的分辨率,请举个例子说明

解决方案 »

  1.   

    *******************************************************************************
    *   过程名:SetScreen
    *   过程说明:    修改屏幕的分辨率,使屏幕软件在运行时不会因为分辨率的问题而失真
    *
    *   参数说明:
    *   OldWidth,OldHeight:   使过程返回系统原有的屏幕的分辨率(分别为宽与高)
    *   NewWidth,NewHeight:   想要设置的屏幕的分辨率(分别为宽与高)
    *******************************************************************************)Procedure  SetScreen(NewWidth,NewHeight,NewFreq:Integer; Var OldWidth,OldHeight,OldFreq:Integer);
    Var
      DevMode: TDeviceMode;
    begin
      OldWidth:=  GetSystemMetrics(SM_CXSCREEN);
      OldHeight:= GetSystemMetrics(SM_CYSCREEN);  if (OldWidth <> NewWidth) and (OldHeight <> NewWidth) then
      begin
        DevMode.dmSize:=  sizeof(TDeviceMode);
        EnumDisplaySettings(nil, DWORD(-1), DevMode);
        DevMode.dmFields:=  DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
        DevMode.dmPelsWidth:= NewWidth;
        DevMode.dmPelsHeight:=  NewHeight;
        OldFreq:= DevMode.dmDisplayFrequency;
        DevMode.dmDisplayFrequency:=  NewFreq;
        ChangeDisplaySettings(DevMode,0);
      end;
    end;
      

  2.   

    可以不用API其实很简单
    Screen.Width
    Screen.Height
      

  3.   

    函数 ChangeDisplaySettings 可以用来改变计算机屏幕分辨率。 function SetScreenResolution(width, height: integer): Longint; 
    var 
      DeviceMode: TDeviceMode; 
    begin 
      with DeviceMode do begin 
        dmSize := SizeOf(TDeviceMode); 
        dmPelsWidth :=width; 
        dmPelsHeight := height; 
        dmFields := DM_PELSWIDTH or DM_PELSHEIGHT; 
      end; 
      Result := ChangeDisplaySettings(DeviceMode, CDS_UPDATEREGISTRY); 
    end; 
    上面这个自定义函数的调用例程如下: var 
      OldWidth, OldHeight: integer; 
      //先得到当前屏幕的分辨率,以备恢复使用,然后将分辨率设置为 800*600 
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      OldWidth := GetSystemMetrics(SM_CXSCREEN); 
      OldHeight := GetSystemMetrics(SM_CYSCREEN); 
      SetScreenResolution(800, 600); 
    end; //恢复到原来的分辨率。 
    procedure TForm1.Button2Click(Sender: TObject); 
    begin 
      SetScreenResolution(OldWidth, OldHeight); 
    end; 还可以利用 ChangeDisplaySettings 函数来改变系统的色彩深度和刷新频率,在 Win32 SDK中有详细的说明,不妨自己试试吧。