Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как рзвернуть окно на весь экран?

292
07 ноября 2005 года
Matush
726 / / 14.01.2004
На весь экран - это значит на весь экран, то есть закрыть панель управления.

На данный момент есть одна тупая идея: сделать окошко со стилем HWND_TOPMOST и задать ему размеры экрана. Но все равно, если нажать теперь на этом окошке кнопу развернуть, то панелька внизу появится.

Есть еще мысль прятать панельку (что более правильно).

Может знаете как замутить?
1.9K
07 ноября 2005 года
mail0
137 / / 09.05.2005
Цитата:
Originally posted by Matush
На весь экран - это значит на весь экран, то есть закрыть панель управления.

На данный момент есть одна тупая идея: сделать окошко со стилем HWND_TOPMOST и задать ему размеры экрана. Но все равно, если нажать теперь на этом окошке кнопу развернуть, то панелька внизу появится.

Есть еще мысль прятать панельку (что более правильно).

Может знаете как замутить?


 
Код:
HWND hWnd=FindWindow("Shell_TrayWnd",NULL);
ShowWindow(hWnd,SW_HIDE);
//дальше просто разворачивай окно
262
07 ноября 2005 года
Iktomy
1.2K / / 11.10.2004
Мож идея у меня и тупая, но вот пишу в OpenGL и в различных хэлпах и манах наткнулся на структуру DEVMODE.
Стили окна CS_HREDRAW | CS_VREDRAW | CS_OWNDC
Параметры структуры (у меня ессно):
 
Код:
DEVMODE dmScreenSettings;                               // Device Mode
        memset(&dmScreenSettings,0,sizeof(dmScreenSettings));   // Makes Sure Memory's Cleared
        dmScreenSettings.dmSize=sizeof(dmScreenSettings);       // Size Of The Devmode Structure
        dmScreenSettings.dmPelsWidth        = width;                // Selected Screen Width
        dmScreenSettings.dmPelsHeight       = height;               // Selected Screen Height
        dmScreenSettings.dmBitsPerPel       = bits;                 // Selected Bits Per Pixel
        dmScreenSettings.dmDisplayFrequency = 85;
        dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;

Если совсем уж не то, или не сработает - прошу камнями не забрасывать.:)
255
07 ноября 2005 года
Dart Bobr
1.4K / / 09.04.2004
Цитата:
Originally posted by Matush
На весь экран - это значит на весь экран, то есть закрыть панель управления.

На данный момент есть одна тупая идея: сделать окошко со стилем HWND_TOPMOST и задать ему размеры экрана. Но все равно, если нажать теперь на этом окошке кнопу развернуть, то панелька внизу появится.

Есть еще мысль прятать панельку (что более правильно).

Может знаете как замутить?



Присвоить окну стиль WS_POPUP.

243
08 ноября 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Dart Bobr
Присвоить окну стиль WS_POPUP.


Тогда будут недоступны кнопки свернуть/максимизировать/закрыть. Даже при WS_SYSMENU.

255
08 ноября 2005 года
Dart Bobr
1.4K / / 09.04.2004
Цитата:
Originally posted by pacific_7
Тогда будут недоступны кнопки свернуть/максимизировать/закрыть. Даже при WS_SYSMENU.


Нарисовать от руки ;))

255
08 ноября 2005 года
Dart Bobr
1.4K / / 09.04.2004
Или WS_MAXIMIZE, предварительно грохнув Explorer.
292
08 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by mail0
 
Код:
HWND hWnd=FindWindow("Shell_TrayWnd",NULL);
ShowWindow(hWnd,SW_HIDE);
//дальше просто разворачивай окно


Как ни странно, после изчезновения таскбара окно все равно не разворачивается на весь экран.

299
08 ноября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Matush
Как ни странно, после изчезновения таскбара окно все равно не разворачивается на весь экран.


Это когда таскбар не убирается.
А когда убирается то всё ок.

292
09 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by 3D Bob
Это когда таскбар не убирается.
А когда убирается то всё ок.


Твой пост как обычно был мега полезен :)

На данный момент (и скорее всего оно так и останется) решаю проблему так, как опсал вначале: HWND_TOPMOST и задаю окну размеры экрана. Эта идея мне уже не кажется такой тупой.

Нарыл в нете пример. Так они также делают. Это было видно сразу даже без просмотра кода, потому что если альт табом открыть другое окно, то таск бар появлялся (я так понмаю в этот момент с окна снимался HWND_TOPMOST).

243
10 ноября 2005 года
pacific_7
1.9K / / 06.09.2004
Я ради интереса пробовал сделать от обратного - временно снять с панели управления "поверх всех окон". Как ни странно - не получается. Т.е. SetWindowPos(tskbar,HWND_BOTTOM,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE) срабатывает нормально (возвращает ненулевое занчение) но ничего не меняется. Винда наверное все время контролирует состояние панели. Забавно :) Matush, расскажешь, как в итоге делать будешь, может чего нового придумаешь.
299
10 ноября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Matush
Твой пост как обычно был мега полезен :)

На данный момент (и скорее всего оно так и останется) решаю проблему так, как опсал вначале: HWND_TOPMOST и задаю окну размеры экрана. Эта идея мне уже не кажется такой тупой.

Нарыл в нете пример. Так они также делают. Это было видно сразу даже без просмотра кода, потому что если альт табом открыть другое окно, то таск бар появлялся (я так понмаю в этот момент с окна снимался HWND_TOPMOST).


Это как это, как всегда?
Я вот что имел ввиду, интересно, как таскбар или например ICQ ограничивают область экрана, так что при развертывании на весь экран, он развертывается только в пределах не задевающие ICQ и Taskbar

1.9K
10 ноября 2005 года
mail0
137 / / 09.05.2005
Вот сейчас посмтрел сырец какой-то проги на биледре... там это сделано как я говорил, только ещё окну явно задются р-ры экрана...
 
Код:
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
HWND Hnd = FindWindow("Shell_TrayWnd",NULL);
ShowWindow(Hnd,SW_HIDE);
Width = Screen->Width;
Height = Screen->Height;

}

а при закрытии окна...
 
Код:
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete Sky;
HWND H = FindWindow("Shell_TrayWnd",NULL);
ShowWindow(H,SW_SHOW);
}
292
10 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by mail0
Вот сейчас посмтрел сырец какой-то проги на биледре... там это сделано как я говорил, только ещё окну явно задются р-ры экрана...



Лучше уже дать окну HWND_TOPMOST и задать размеры окошку, чем прятать таск бар, потому что при вылете програмы таск бар останется невидимым, что не очень хорошо.

13K
23 ноября 2005 года
forcider
5 / / 23.09.2005
я делал окно на весь экран, задав ему стиль 0x80000000|ws_maximized. Получается полноэкранное приложение, нет никаких проблем с таскбаром, скрывать который не есть хорошо.
292
24 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by forcider
я делал окно на весь экран, задав ему стиль 0x80000000|ws_maximized. Получается полноэкранное приложение, нет никаких проблем с таскбаром, скрывать который не есть хорошо.



Не ws_maximized, а WS_MAXIMIZE
0x80000000 - это WS_POPUP

тоесть см. пост Dart Bobr'а (четвертый сверху)

Это пока неплохой вариант. Но можно как-то иначе.

к примеру, как заметил 3D bob, ICQ и некоторые другие проги умеют органичивать область десктопа.

13K
24 ноября 2005 года
forcider
5 / / 23.09.2005
Насчёт ограничения области десктопа всё довольно просто. Функцией SHAppBarMessage создаётся appbar аналогичный таскбару (сообщение ABM_NEW), любого размера и у любого края экрана. Дальше с ним работаешь, как с обычным окном. WINDOWS берёт на себя управление взаимным положением appbarов и расчёт области десктопа. Все сообщения описаны в доке на эту функцию.
292
24 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by forcider
SHAppBarMessage



Респект, посмотрел в мельком МСДН - вроде то что доктор прописал

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог