Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

Помогите разобраться с изменением разрешения экрана   Найти похожие ветки 

 
DimaK   (2002-11-11 00:14) [0]

Люди, подскажите!
Необходимо поменять разрешение экрана по ходу выполнения программы, в Delphi5 все работало, писал как и советовали:

function SetFullscreenMode:Boolean;
var DeviceMode : TDevMode;
begin
with DeviceMode do begin
dmSize:=SizeOf(DeviceMode);
dmBitsPerPel:=16;
dmPelsWidth:=640;
dmPelsHeight:=480;
dmFields:=DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
result:=False;
if ChangeDisplaySettings(DeviceMode,CDS_TEST or CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL
then Exit;
Result:=ChangeDisplaySettings(DeviceMode,CDS_FULLSCREEN) = DISP_CHANGE_SUCCESSFUL;
end;
end;

procedure RestoreDefaultMode;
var T : TDevMode absolute 0;
begin
ChangeDisplaySettings(T,CDS_FULLSCREEN);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if setFullScreenMode then begin
sleep(7000);
RestoreDefaultMode;
end;
end;

Но вот Delphi 6 ругается на процедуру RestoreDefaultMode, а
точнее на переменную, ей ненравится "absolute 0". Что можно сделать?
Если можно, ответьте на мыло: KuzminDima@mail.ru


 
apay ©   (2002-11-11 00:37) [1]

попробуй так:

function MyChangeDisplaySettings( lpDevMode: PDeviceMode; dwFlags: DWORD): Longint; stdcall; external "user32.dll" name "ChangeDisplaySettings";

procedure RestoreDefaultMode;
begin
MyChangeDisplaySettings( nil, CDS_FULLSCREEN );
end;



 
apay ©   (2002-11-11 00:40) [2]

ps.
можно так:

procedure RestoreDefaultMode;
begin
ChangeDisplaySettings( PDeviceMode(nil)^, CDS_FULLSCREEN );
end;


 
Axis_of_Evil ©   (2002-11-11 16:16) [3]

Подмечу лишь, что absolute 0 действительно в Д6 не работатет
// это была моральная поддержка


 
Геннадий ©   (2002-11-11 21:18) [4]

unit ScreenModeUnit;

interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin;

const MaxVideoModes = 200; // это не очень актуально
type TVideoMode = record

Width,
Height,
ColorDepth : Word;
Description : String[20];
end;

var VideoModes : array[0..MaxVideoModes] of TVideoMode;

NumberVideomodes : Integer = 1;
ScreenModeChanged:boolean;
type
TForm1 = class(TForm)
Button1: TButton;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var ModeIndex: Integer;
DeviceMode : TDevMode;
Result:boolean;
begin
mODEiNDEX:=sPINeDIT1.Value;
with DeviceMode do
begin
dmSize:=SizeOf(DeviceMode);
dmBitsPerPel:=16;//VideoModes[ModeIndex].ColorDepth;
dmPelsWidth:=Spinedit1.Value;//VideoModes[ModeIndex].Width;
dmPelsHeight:=Spinedit2.Value;//VideoModes[ModeIndex].Height;
dmFields:=DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
// при неудачной смене режима переходим в режим текущего разрешения
Result:=(ChangeDisplaySettings(DeviceMode,CDS_FULLSCREEN) = DISP_CHANGE_SUCCESSFUL);
if Result then ScreenModeChanged:=True;
if ModeIndex = 0 then ScreenModeChanged:=False;
end;
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-72232
W0land
2003-01-14 14:31
2003.01.23
WinXP+Delphi5 - проблема с отладчиком


1-72218
Жанна
2003-01-14 12:52
2003.01.23
Помогите пожалуйста


1-72403
alecs
2003-01-13 17:47
2003.01.23
BarCode


1-72215
Fors
2003-01-11 22:21
2003.01.23
как к этой задаче добавить проверки.


3-72052
AlexG
2003-01-05 12:05
2003.01.23
Provider