如何在程序一开始改变屏幕分率为 800*600 32真彩色

解决方案 »

  1.   

    设置屏幕分辨率和颜色    
    procedure SetRes(XRes, YRes: DWord); 
    varlpDevMode : TDeviceMode;beginEnumDisplaySettings(nil, 0, lpDevMode);lpDevMode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;lpDevMode.dmPelsWidth:=XRes;lpDevMode.dmPelsHeight:=YRes;ChangeDisplaySettings(lpDevMode, 0);end;******************设置屏幕颜色深度procedure Toggle;vari : LongInt;b : LongInt;DevM : TDEVMODE;h: HDC;w: HWND;IsToggled: Boolean;PreviousBitsPerPixel: Integer;beginIsToggled := not IsToggled;w:=GetDesktopWindow;h:=GetDC(w);tryif IsToggled thenbegin {change to 8 bit}PreviousBitsPerPixel := GetDeviceCaps(h, BITSPIXEL);i := -1;RepeatInc(i);Until EnumDisplaySettings(pchar(0), i, DevM) = False;DevM.dmFields := DM_BITSPERPEL;DevM.dmBitsPerPel := 8;b := ChangeDisplaySettings(DevM, 0);if ((GetDeviceCaps(h, RASTERCAPS) and RC_PALETTE) = 0) or(b <> DISP_CHANGE_SUCCESSFUL) thenbeginshowmessage('can''t use palettes');IsToggled := False;endend else {Change mform to palette values and perform desired 8 bit display}else begin {change back value}i := -1;RepeatInc(i);Until EnumDisplaySettings(pchar(0), i, DevM) = False;DevM.dmFields := DM_BITSPERPEL;DevM.dmBitsPerPel := PreviousBitsPerPixel;b := ChangeDisplaySettings(DevM, 0);if b <> DISP_CHANGE_SUCCESSFUL then showmessage( 'Error restoring origional display');end;finallyReleaseDC(w,h);end;end;