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

Вниз

FullSceen   Найти похожие ветки 

 
SergProger ©   (2005-08-07 22:09) [0]

Всем огромный привет! Народ, скажите пожалуйста, как реализовать FullScreen в игре, не используя ни DelphiX, ни OpenGL, ни что нибудь другое, т.е. форма во весь экран и изменение разрешения экрана + возврат к предыдущему при minimize или наоборот. Заранее спасибо!


 
grouzd[E]v ©   (2005-08-07 22:12) [1]

Гм.... Пардон, а как организовать это дело OGL"ом? Я вот всю жизню думал что тут WinAPI нужен....


 
XProger ©   (2005-08-07 22:21) [2]

http://xproger.mirg.ru/files/XTropper_src.rar
XTropper.dpr, l_gl.pas

P.S.
OpenGL не умеет разрешение менять (а это и не нужно ему)


 
MeF Dei Corvi ©   (2005-08-08 04:54) [3]


> XProger ©   (07.08.05 22:21) [2]

Прогер, заметь "...форма во весь экран ", т.е. я думаю твои сырцы ему мало помогут...


 
Xeno ©   (2005-08-08 05:56) [4]

Var
       BackHeight,BackWidth : Integer;
       BackDCHeight,BackDCWidth : Integer;

...

function ChangeDisplayResolution(x, y,fDepth : Cardinal):Boolean;
var
 DeviceMode : TDEVMODE;
begin

with DeviceMode do begin
 dmSize:=SizeOf(DeviceMode);
 dmBitsPerPel:=fDepth;
 dmPelsWidth:=x;
 dmPelsHeight:=y;
 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 SetResolution(pForm : TForm;X,Y,Dp:integer;Active : Boolean);
Var   res : TResolution;
 tmpDevMode : TDevMode;
begin
 if Active then begin
    BackHeight := pForm.Height;
    BackWidth :=  pForm.Width;
    BackDCHeight := Screen.Height;
    BackDCWidth :=  Screen.Width;
    end;

 if (x=0) and (y=0) then
 begin
   pForm.Height:= Screen.Height;
   pForm.Width:= Screen.Width;
 end else
 if (x<>0) and (y<>0) then
 begin
//   res:=GetIndexFromResolution(x, y, cScreenDepthToBPP[sd32bits]);
  res:=GetIndexFromResolution(x, y, Dp);
  if res=0 then
     raise Exception.Create("Unsupported video mode");

   ChangeDisplayResolution(x,y,Dp);
   pForm.Height:= Y;
   pForm.Width:= X;
 end;

 if Active then begin
  ShowWindow(FindWindow("Shell_TrayWnd", nil), SW_HIDE);
  pForm.BorderStyle := bsNone;
  pForm.Position := poDefault;
  pForm.Cursor := crnone;
  // Включение режима
  SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
 end else begin
  ShowWindow(FindWindow("Shell_TrayWnd", nil), SW_SHOW);
  pForm.BorderStyle := bsSingle;
  pForm.Position := poDesigned;
  // Выключение режима
  SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);
    pForm.Height := BackHeight;
    pForm.Width := BackWidth;
    ChangeDisplayResolution(BackDCWidth,BackDCHeight,Dp);
 end;
end;
....
SetResolution(800,600,16,true); // - установить режим 800x600x16
SetResolution(0,0,0,false); // - вернуть всё на место


 
SergProger ©   (2005-08-08 14:23) [5]

Xeno, спасибо, но при попытке откомпилировать он показал, что тип TResolution - undeclared identifier. Что делать? Какой модуль подключать?


 
XProger ©   (2005-08-08 17:30) [6]

SergProger, я тебе вроде ссылку давал...


 
Xeno ©   (2005-08-09 05:42) [7]

>SergProger
Блин, ну ты даёшь, напрягись немного и поищи в модулях GLScene,это-же травиальная задача,примеров в сети предостаточно...


 
TButton ©   (2005-08-11 05:41) [8]


> напрягись немного и поищи в модулях GLScene


>не используя ни DelphiX, ни OpenGL



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

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

Наверх




Память: 0.48 MB
Время: 0.029 c
4-1130998303
M@xim
2005-11-03 09:11
2006.01.22
Microsoft Agent Control


6-1128667011
marcel
2005-10-07 10:36
2006.01.22
кириллица в ссылке


2-1135708630
Chester
2005-12-27 21:37
2006.01.22
Народ как правильно поставить счётчик?


14-1135355766
Pazitron_Brain
2005-12-23 19:36
2006.01.22
Вопрос по Microsoft Vitrual PC 2004


2-1135921105
Alex7
2005-12-30 08:38
2006.01.22
Обращение к БД при активизации формы