Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Вниз

Как развернуть прогу в полноэкранный режим?   Найти похожие ветки 

 
Naik   (2002-09-15 08:46) [0]

Народ, подскажите, как мне развернуть мою гаму в полноэкранный режим:)


 
VitGun   (2002-09-15 18:12) [1]

Если писал при помощи DelphiX, то в DxDraw.Options поставь doFullScreen=true;

З.Ы DxDraw.Options это в Objects Inspector"e.


 
Gandalf   (2002-09-16 08:47) [2]

Прости, но помоему вопрос этот многих уже достал, слишком часто спрашивают, когда кругом огромное колическтво примеров с ФулСкрин. Вот кусок кода, как я это делаю - оптимизируй сам:

{ **************************************************************************** }
{ * * }
{ * Первое переключение в полноэкранный режим (до создания окна) * }
{ * * }
{ **************************************************************************** }
procedure glFirstSwitchToFullscreen(var Style, ExStyle: LongWord);
var
dmScreenSettings: DevMode;
begin
ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings));

// Установка параметров полноэкранного режима
with dmScreenSettings do
begin
dmSize := SizeOf(dmScreenSettings);
dmPelsWidth := Config.WindowWidth; // Ширина экрана
dmPelsHeight := Config.WindowHeight; // Высота экрана
dmBitsPerPel := Config.BitCount; // Глубина экрана
dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL;
end;

// Установка полноэкранного видеорежима
Log.Write("Changing screen mode to fullscreen");
with dmScreenSettings do
Log.Write("Videomode is " + IntToStr(dmPelsWidth) + "x" + IntToStr(dmPelsHeight) + "x" + IntToStr(dmBitsPerPel));
if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) then
begin
Log.Error("Unable to switch to fullscreen");
end;

Style := Style and (not WS_OVERLAPPEDWINDOW);
Style := Style or
WS_POPUP or // Всплывающее окно
WS_CLIPCHILDREN or // Требуется для OpenGL
WS_CLIPSIBLINGS; // Требуется для OpenGL
ExStyle := ExStyle and (not WS_EX_WINDOWEDGE);
ExStyle := ExStyle or
WS_EX_APPWINDOW; // Главное окно приложения
end;

{ **************************************************************************** }
{ * * }
{ * Первое переключение в оконный режим (до создания окна) * }
{ * * }
{ **************************************************************************** }
procedure glFirstSwitchToWindow(var Style, ExStyle: LongWord);
begin
Log.Write("Changing screen mode to window mode");
ChangeDisplaySettings(DevMode(nil^), 0);
Style := Style and (not WS_POPUP);
Style := Style or
WS_OVERLAPPEDWINDOW or // Перекрывающее окно
WS_CLIPCHILDREN or // Требуется для OpenGL
WS_CLIPSIBLINGS; // Требуется для OpenGL
Style := Style and (not WS_SIZEBOX) and (not WS_MAXIMIZEBOX);
ExStyle := ExStyle or
WS_EX_APPWINDOW or // Главное окно приложения
WS_EX_WINDOWEDGE; // Рамка и заголовок для окна
end;


{ **************************************************************************** }
{ * * }
{ * Переключение в полноэкранный режим (после создания окна) * }
{ * * }
{ **************************************************************************** }
procedure glSwitchToFullscreen;
var
dwStyle: DWord; // Стиль окна
dwExStyle: DWord; // Расширенный стиль окна
begin
Log.Enter("glSwitchToFullscreen: Switch to fullscreen mode");
SetWindowPos(MainWindow.Window, 0, 0, 0, 0, 0, SWP_HIDEWINDOW);
dwStyle := GetWindowLong(MainWindow.Window, GWL_Style);
dwExStyle := GetWindowLong(MainWindow.Window, GWL_ExStyle);
glFirstSwitchToFullscreen(dwStyle, dwExStyle);
// Установка стилей
SetWindowLong(MainWindow.Window, GWL_STYLE, dwStyle);
SetWindowLong(MainWindow.Window, GWL_EXSTYLE, dwExStyle);
glUpdateWindowSize;
Log.Leave;
end;

{ **************************************************************************** }
{ * * }
{ * Переключение в оконный режим (после создания окна) * }
{ * * }
{ **************************************************************************** }
procedure glSwitchToWindow;
var
dwStyle: DWord; // Стиль окна
dwExStyle: DWord; // Расширенный стиль окна
begin
Log.Enter("glSwitchToWindow: Switch to window mode");
SetWindowPos(MainWindow.Window, 0, 0, 0, 0, 0, SWP_HIDEWINDOW);
dwStyle := GetWindowLong(MainWindow.Window, GWL_Style);
dwExStyle := GetWindowLong(MainWindow.Window, GWL_ExStyle);
glFirstSwitchToWindow(dwStyle, dwExStyle);
// Установка стилей
SetWindowLong(MainWindow.Window, GWL_STYLE, dwStyle);
SetWindowLong(MainWindow.Window, GWL_EXSTYLE, dwExStyle);
glUpdateWindowSize;
Log.Leave;
end;


 
VitGun   (2002-09-16 18:22) [3]

Gandalf, это что, называется:"Мы не ищем легких путей"?


 
timetrax   (2002-09-16 22:15) [4]

хм, у меня вот трабла, после выхода из проги(запускается с под опен Геля в фулскрине на резолюшне 800*600*16) не хочет возвращаться в нормальный режим(1024*768) и я наблюдаю верхний левый угол десктопа, на разрешении 800*600, вернуться можно только принудителным переходом в другой режим(другой прогой), т.к, свойства десктопа почему-то недоступны, как поправить положение, что мне дописать в код чтобы корректно завершить рабботу?


 
Gandalf   (2002-09-16 22:24) [5]

>Gandalf, это что, называется:"Мы не ищем легких путей"?
Нет это называется грамотный код, хорошо отлаженый сбоев не дает.


 
VitGun   (2002-09-17 18:40) [6]

Gandalf, не понимаю я этого грамотного кода, зачем писать кучу операторов, процедур и т.д если все можно сделать в одну строчку?


 
Chujoi   (2002-09-30 15:43) [7]

I>
> Gandalf, не понимаю я этого грамотного кода, зачем писать
> кучу операторов, процедур и т.д если все можно сделать в
> одну строчку?


Коли сам такой умный то чё спрашивал ясь?



 
VitGun   (2002-10-03 18:50) [8]

Chujoi, Открой глаза! Это не создал ветку! Код, приведенный Gandalf"ом я понял, не тупой. Просто мне не понятно - неужели нельзя сделать проще. Если все программы пичкаются вот таким "грамотным кодом", то теперь понятно, почему Маздай с каждой новой версией(особенно ХР), тормозит все больше и больше и глючит так же(неотстроенная).


 
Gandalf   (2002-10-03 20:35) [9]

>Chujoi, Открой глаза! Это не создал ветку! Код, приведенный >Gandalf"ом я понял, не тупой. Просто мне не понятно - неужели >нельзя сделать проще. Если все программы пичкаются вот >таким "грамотным кодом", то теперь понятно, почему Маздай с

Друзья прекратим безболезные приперания! Я выдрал код из одного из модулей своей программы. Громозкость приведенных процедур объясняется необходимость обеспечить 100% переключения режима - без возможности на ошибку и если уж таковая случилась с востановлением перевоночального режима, так же с ведением отладочного лога, и прочего "мусора" обычно не нужного в большенстве приложений - данная ситуация связана с специфичностью задачи где данный код применяется. Потому приводя его сказал - "оптимизируй сам". Это как писать письмо вырезая фразы из газеты - громозко получится. Возможно я не прав, но если это человеку помогло - то видимо можно так делать.

Если это глупо, но это работает - значит это не глупо. (Мэрфи)

Давайте жить дружно. (Кот Леапольд :)



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

Форум: "Игры";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
1-17018
R
2003-02-25 01:43
2003.03.06
Два вопроса на разные темы.


9-16843
Ach_Den
2002-09-13 10:14
2003.03.06
Алгоритм движения воды?


3-16961
Sergey Masloff
2003-02-17 13:27
2003.03.06
Всем лентяям и чайникам посвящается...


1-17066
Nemo
2003-02-25 02:51
2003.03.06
А можно сделать чтобы приложение нельзя было уничтожить?


3-16953
glory32
2003-02-17 11:01
2003.03.06
Работа с ФохПрошной базой под Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский