Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.230.76.153] |
|
Сообщ.
#1
,
|
|
|
Добрый день. Ищу более или менее простой способ перейти в полноэкранный режим. wsMaximized, alClient и bsNone пробовал, остается панель задач. Убираю её через ShowWindow ― всё вроде бы работает, но очень криво. Во-первых, при нажатии на Win ничего не происходит, из программы выйти невозможно. Перехватывать нажатия на неё не получилось. Во-вторых, после включения и выключения экрана панель снова появляется на месте. Пробовал менять расширение экрана - вся та же панель задач. В общем, беда.
Подскажите, пожалуйста, хотя бы в какую сторону читать. Очень не хочу делать две кучи костылей и перехватов. Очень нужно, правда не очень срочно, сделать полноэкранный режим как в нормальных играх. Заранее спасибо. |
Сообщ.
#2
,
|
|
|
Цитата k.sovailo @ Ищу более или менее простой способ перейти в полноэкранный режим. PostMessage(Form1.Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 1); |
Сообщ.
#3
,
|
|
|
Руслан, спасибо, кажется, начал разбираться. Нажатие на Win (и даже на странную кнопку сбоку планшета) таки можно перехватить OnKeyDown, хотя нельзя отменить. Отменяется оно, как я понял, через WMSysMCommand и прочие. Собственно, при нажатии на Win сворачиваю форму и всё. Правда, есть кое-что, чем окно всё ещё отличается от нормальных. На компьютере это не так критично, но вот у меня планшет-трансформер на Windows, и когда я гашу экран, а потом включаю, то большинство игр нахожу в свёрнутом состоянии. Потом они долго разворачиваются, мелькают, короче, всем видом демонстрируют, какие они серьёзные программы.
А у меня не получаемся перехватить событие гашения экрана (даже через WMSysMessage), чтобы свернуть приложение. Может кто-то знает, как? Код, хотя он не очень нужен: procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if fc and(Key=91) then PostMessage(Form1.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 1) else if fc then begin Form1.BorderStyle:=bsSingle; PostMessage(Form1.Handle, WM_SYSCOMMAND, SC_RESTORE, 1); fc:=false; end else begin Form1.BorderStyle:=bsNone; PostMessage(Form1.Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 1); fc:=true; end; end; |
Сообщ.
#4
,
|
|
|
Цитата k.sovailo @ Потом они долго разворачиваются, мелькают, короче, всем видом демонстрируют, какие они серьёзные программы. Игры, часом, не используют графические ускорители? DX? OGL? Это такой намёк... |