关于API的应用 如何用API来获取当前的分辨率,请举个例子说明 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ******************************************************************************** 过程名: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; 可以不用API其实很简单Screen.WidthScreen.Height 函数 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中有详细的说明,不妨自己试试吧。 过于一个updata的错误! 谁有绘制正弦波的程序片段 ComboBox_department我要让它不可以输入,而只能选择 谁有installshield8.0的使用说明啊,急需中…… !!!!!!!赶在五一的之前升级了,祝朋友们五一快乐 10!!!!!!!! Self.Handle的值在运行时居然会改变 Office助手之间进程的通信技术怎么实现? 向大神求教,关于Delphi StringGrid IdFTPServer 问题 这样的ado怎么能用? 在delphi中怎样调用dll??能不能给出一段成熟稳定的代码。急!特急! 一个真实的项目经历,很多东西大家可以借鉴下
* 过程名: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;
Screen.Width
Screen.Height
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中有详细的说明,不妨自己试试吧。