Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: диалог - на весь экран  (Прочитано 22945 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
Richi
Гость
« : 17-04-2006 06:07 » 

Вроде простая задача: при создании окна диалога, сразу развернуть его на весь экран.
Не подскажете как?
Спасибо
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #1 : 17-04-2006 07:08 » 

или послать сообщение WM_MAXIMIZE или установить стиль WS_MAXIMIZE (вроде, так)
Записан

Удачного всем кодинга! -=x[PooH]x=-
Richi
Гость
« Ответ #2 : 17-04-2006 07:54 » 

Стиль WS_MAXIMIZE почему-то не разворачивает на весь экран. А сообщение WM_MAXIMIZE не существует ...
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 17-04-2006 08:27 » 

ShowWindow(hWnd,SW_SHOWMAXIMIZED);
или попробуй
ShowWindow(hWnd,SW_MAXIMIZED);

Не забудь
UpdateWindow(hWnd);
« Последнее редактирование: 17-04-2006 08:33 от nikedeforest » Записан

ещё один вопрос ...
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #4 : 17-04-2006 09:08 » 

Цитата
А сообщение WM_MAXIMIZE не существует ...
упс... перепутал с SC_MAXIMIZE (WM_SYSCOMMAND)
Записан

Удачного всем кодинга! -=x[PooH]x=-
Richi
Гость
« Ответ #5 : 17-04-2006 09:43 » 

ShowWindow(hWnd,SW_SHOWMAXIMIZED);
или попробуй
ShowWindow(hWnd,SW_MAXIMIZED);

Не забудь
UpdateWindow(hWnd);
Вообще-то я показываю диалог при помощи DoModal()
Может как-то перегрузить функцию OnCreate() ?
Я попробовал вставить туда ModifyStyleEx(0, WS_MAXIMIZE ); но тоже не помогло Жаль
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #6 : 17-04-2006 10:23 » 

вроде, есть два способа:
1. Установить стиль WS_MAXIMIZE до создания окна. Не знаю как на Visual, а в Builder перегружается OnCreateParam
2. Установить стиль после создания окна, но тогда самому изменить размеры (Например, использую SetWindowPos).
Записан

Удачного всем кодинга! -=x[PooH]x=-
Richi
Гость
« Ответ #7 : 17-04-2006 11:06 » 

1. Я ставил флажок WS_MAXIMIZE прямо в файле ресурсов.
Код:
IDD_SCOPE_DLG DIALOGEX 0, 0, 600, 400
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MAXIMIZE

2. Также перегружал OnCreate()
Код:
int CScope::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;

lpCreateStruct->dwExStyle |= WS_MAXIMIZE;

return 0;
}
В первом случае окно смещается с центра ближе к правому нижнему краю экрана.
Во втором случае вообще ничего не происходит  С ума сойти...

Кстати, что-то я не нашел в MSDN полного списка флажков lpCreateStruct->dwExStyle

Можно конечно получить текущую резолюцию монитора, а потом изменить размеры окна при помощи Move().
Если ничего не получится, то так и сделаю. Но наверняка есть более простой способ.
« Последнее редактирование: 17-04-2006 11:08 от Richi » Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #8 : 17-04-2006 11:35 » 

MFC Library Reference  
Window Styles 
http://msdn2.microsoft.com/en-us/library/czada357.aspx

Попробуй размеры диалога в файле ресурсов не задавать.
Записан

Удачного всем кодинга! -=x[PooH]x=-
Richi
Гость
« Ответ #9 : 17-04-2006 12:06 » 

Не задавать размеры нельзя. Ругается. Поставил размеры по нулям, получил окно размером с песчинку.
Ладно, буду получать резолюцию монитора, а потом ресайзить окно.

За линк на флаги отдельное спасибо.
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 17-04-2006 12:07 » 

Диалог поддерживает свйство отображаться в развернутом виде? Может забыл указать?
Записан

ещё один вопрос ...
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #11 : 17-04-2006 12:12 » 

Цитата
За линк на флаги отдельное спасибо.
Более полезной, будет ссылка на уровень выше

http://msdn2.microsoft.com/en-us/library/xyfwf42d(VS.80).aspx
Записан

Удачного всем кодинга! -=x[PooH]x=-
Richi
Гость
« Ответ #12 : 17-04-2006 12:48 » 

Диалог поддерживает свйство отображаться в развернутом виде? Может забыл указать?
Я не нашел такого свойства. Но если я в ресурсах ставлю флаг WS_MAXIMIZEBOX, появляется кнопочка максимизации и тогда с ее помощью можно развернуть диалог.
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 17-04-2006 13:03 » 

ДА, я это и имел ввиду, каряво выразился, прошу прощения.
Записан

ещё один вопрос ...
Richi
Гость
« Ответ #14 : 17-04-2006 13:20 » new

Хм... а может просто перехватить сообщение, генерируемое кнопкой максимизации, а потом сгенерировать свое?
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #15 : 17-04-2006 13:29 » 

есть, у меня сильное подозрение, что она генерит
Цитата
SC_MAXIMIZE (WM_SYSCOMMAND)
Записан

Удачного всем кодинга! -=x[PooH]x=-
Richi
Гость
« Ответ #16 : 18-04-2006 04:11 » 

Получилось! Все оказалось очень просто.
В функции OnInitDialog() добавляется строка ShowWindow(SW_MAXIMIZE);
Это, в общем-то то, что предлагал nikedeforest в самом начале. Жаль, что я сразу не обратил внимание.
Спасибо всем.
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #17 : 18-04-2006 05:50 » 

а он у тебя Modal получается?
Записан

Удачного всем кодинга! -=x[PooH]x=-
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 18-04-2006 11:32 » 

Я думал ты попробовал и у тебя не получилось, а ты, оказывается, просто проигнорировал Жаль.
Записан

ещё один вопрос ...
Richi
Гость
« Ответ #19 : 11-05-2006 05:28 » 

а он у тебя Modal получается?
Да, он получается Modal

Я думал ты попробовал и у тебя не получилось, а ты, оказывается, просто проигнорировал Жаль.
Сорри. Видимо я просто не понял с самого начала.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines