Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полноэкранный режим - войти/выйти 
:(
    Опции темы
neosapient
Дата 30.11.2006, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Есть ли какая стандартная API функция (набор функций), чтобы переключить монитор в полноэкранный режим, и там если надо сменить разрешение экрана.
На форуме ничего не нашел, в инете предлагают решить эту проблему с помощью DirectX. Но мне хочется на API.
VC7 при нажатии <Alt>+<Shift>+<Enter> переходит в полноэкранный режим. Мне кажется, что M$ не всавляла в код покета VC7 функций из DirectX. 

Приведите пример, переключения монитора в полноэкранный режим и смену разрешение экрана туда и обратно. 
 smile 
PM MAIL   Вверх
Romikgy
Дата 1.12.2006, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



возможно поможет
http://sources.ru/cpp/cpp_madreader.shtml

Добавлено @ 00:37 

или эмуляция 
Цитата(neosapient @  30.11.2006,  22:11 Найти цитируемый пост)
нажатии <Alt>+<Shift>+<Enter>


ChangeDisplaySettings и все что с ним


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
neosapient
Дата 2.12.2006, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Цитата

ChangeDisplaySettings 

Спасибо за функцию.

Только у меня для нее руки кривые. Попытался сделать прогу, чтоб меняла разрешение экрана, захватывала весь экран, рисовала на поверхности всего экрана. 
На будущее хочу добавить корректное востановление экрана, так как он был до моей проги.
Но  пока получается толькопереключить экран на 600х800
Код

void MyFullScreen()
{
    DEVMODE dmScreenSettings;
    memset(&dmScreenSettings,0,sizeof(DEVMODE));
    dmScreenSettings.dmPelsWidth = 800;//1024;
    dmScreenSettings.dmPelsHeight = 600;//768;
    dmScreenSettings.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
    dmScreenSettings.dmSize = sizeof(DEVMODE);
    dmScreenSettings.dmBitsPerPel = 32;
    ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);
}

Как дальше поступить, чтоб захватить весь экран, и нарисовать в нем скажем квадратик.
Главное условие - через WinAPI

P.S.
Модераторы, перенесите пожалуйста данный вопрос в ветку C/C++: Мультимедия, OpenGL/DirectX


Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  ChangeDisplaySettingsTest.rar 36,94 Kb
PM MAIL   Вверх
neosapient
Дата 3.12.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Что никто не пробовал? очень хотелось бы понять принципы?
Цитата

Как дальше поступить, чтоб захватить весь экран, и нарисовать в нем скажем квадратик.

 smile 
-----------------
Применительно к моему примеру, в нем не приходят сообщение WM_PAINT, если при создании окна добавить сборный стиль WS_OVERLAPPEDWINDOW, то будет простое окно.
Но мне нужно захватить весь экран, и что либо в нем нарисовать.

Это сообщение отредактировал(а) neosapient - 3.12.2006, 13:00
PM MAIL   Вверх
neosapient
Дата 3.12.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



А все как всегда оказалось легко
Мои ошибки были следующие:
- при создании окна, надо применять к нему стиль WS_POPUP
- надо конкретно указать размеры окна, а не оставлять это на откуп операционке.

Нашел прикрастный пример градиентной заливки экрана:
Gradient
Вот прямые ссылки на исходники и демку

Ну и наконец мой пример прикреплен в низу.

Теперь надо сделать корректное завершение, какого ваше мнение - как лучше?

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  ChangeDisplaySettingsTest2.rar 37,02 Kb
PM MAIL   Вверх
Romikgy
Дата 3.12.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Это не то что ты хочешь , но тоже можно , рисовать прямо по десктопу  smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
neosapient
Дата 3.12.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Цитата

Это не то что ты хочешь , но тоже можно , рисовать прямо по десктопу    

Всмысле
Код

GetDC(NULL); // получаем дескриптор экрана
PatBlt(dc, 10, 10, 50, 50, PATCOPY); // и рисуем по поверхности

Так тогда сообщения от клавы и мыши не будут приходить в мое окно, придется ставить хук.
Возможно есть еще рузумный вариант???
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.