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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
1-17076
Anatoliy
2003-02-25 17:28
2003.03.06
Работа с MSWord через OLE


6-17222
fc_off
2002-11-26 17:47
2003.03.06
TNMSMTP


14-17381
dimich1978
2003-02-18 15:50
2003.03.06
Шура Каретный


3-16905
Rom@n
2003-02-15 07:30
2003.03.06
переносимая база данных


6-17255
.nuke
2003-01-11 13:45
2003.03.06
Как узнать свой IP