Форум: "Игры";
Текущий архив: 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