Delphi动态调整LCD分辨率
Delphi动态调整显示器分辨率
% b) `4 I3 [8 |0 R. d8 p2 iDelphi提供了可以动态改变屏幕分辨率的函数,分别是EnumDisplaySettings()和ChangeDisplaySettings()。有了它们,编程时可以随时改变分辨率以适应要求。下面的CRTReset函数能方便实现这一功能:
4 s: s; z. P) g
6 k) A* _& ~3 u( U implementation
' X3 w1 E' o% d) k! _: q* ] function CRTReset(X, Y: Word): Boolean;
1 ], s% l/ X2 O9 _ j var2 q2 \0 S2 y0 g, R
lpDevMode: TDeviceMode;- R, t+ D, @, f! f8 E- a
begin) A! |7 b9 K2 ~- @
Result:= EnumDisplaySettings(nil, 0, lpDevMode); //获取显示模式+ n j ]- X% F& v3 z
if Result then begin
( J$ Z" a; H7 U f; `1 _% K; K! M$ U lpDevMode.dmFields := DM_PELSWID
) f, [3 ~1 A" |( a9 P TH Or DM_PELSHEIGHT;7 b/ F Z- d% w; |
lpDevMode.dmPelsWidth := X;
- _! e' J3 y) j/ H2 m lpDevMode.dmPelsHeight := Y; //设置屏幕的宽度和高度 J4 u+ }2 {) ]% u, g$ Q/ u
Result:= ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
. o4 {8 Q" y' b/ [% ?$ W, } //改变屏幕分辨率并返回成功与否6 H* q: i4 O' A4 L
end;# M- u+ G* _) `/ s) Z, B
. i! I0 ]3 n; ?1 D6 E end;
' K4 [3 Q: U8 f& }0 C) s) S# b0 s# A5 N! p" u
procedure TForm1.Button1Click(Sender: TObject);0 R7 q$ b8 L" g% b* l+ I. m: [- c
begin
- M- A" }7 w$ c# `! H: D if CRTReset(800, 600) then ShowMessage('Now is 800*600'); //调用函数,设置分辨率为800×600
" A( |) D' ]! d- \* \% }' i( U end;