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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрыть окно, не скрывая его. 
:(
    Опции темы
Singular
Дата 26.1.2011, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток. 

Проблема на деле не такая абсурдная, как название темы.

С помощью bitblt делается "снимок" HWND_DESKTOP и сохраняется в текстуру для последующего использования в OpenGL.
Естественно, на "снимок" попадает и само окно моей программы, что мне не нужно. А если даже на мгновение сместить его и сделать невидимым перед использованием bitblt - получается заметное мерцание(скорее даже кошмар эпилептика, который видно за милю).

Вопрос знатокам:
Интересует, возможно-ли сделать смещение\отключение окна не заметным для глаз пользователя? Может быть, в winapi есть лазейка? smile 

Это сообщение отредактировал(а) Singular - 26.1.2011, 15:29
PM MAIL   Вверх
borisbn
Дата 26.1.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 6
Всего: 135



В записывалке видео с десктопа Camtasia они вышли из этой ситуации след.образом: их программа висела в трее и старт и стоп записи вызывался по глобальным горячим клавишам.
Есть ещё вариант: специально замедлить исчезновение программы, по таймеру уменьшая прозрачность окна до, скажем, 10%, а затем уже делать hide. Появляться, наверное, лучше также.
за "кошмар эпилептика"   +100 smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Singular
Дата 26.1.2011, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 Роюсь в мсдн и теряю надежду. Ибо мне надо, чтобы окно моей программы было при этом активным. А вся эта затея ради полноценной прозрачности, ибо не хочу давиться подачками winapi типа ColorKey, а хочу полноценную(с альфа-каналом) прозрачность окна OpenGL. В общем, зашел в тупик на пол пути.
PM MAIL   Вверх
Dem_max
Дата 26.1.2011, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

 ибо не хочу давиться подачками winapi типа ColorKey, а хочу полноценную(с альфа-каналом) прозрачность окна

так в чем проблема ?
UpdateLayeredWindow() и вперед


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Singular
Дата 26.1.2011, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Dem_max @ 26.1.2011,  17:51)
так в чем проблема ?
UpdateLayeredWindow() и вперед

http://www.google.ru/images?hl=ru&xhr=...280&bih=821

Вот примеры альфа-канала, про который говорю я. А в Layered Window один ключевой цвет прозрачности(и, насколько я понял, этот тип окон пашет только на висте и семерке).
PM MAIL   Вверх
Dem_max
Дата 27.1.2011, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

А в Layered Window один ключевой цвет прозрачности(и, насколько я понял, этот тип окон пашет только на висте и семерке).

UpdateLayeredWindow() работает с 2000 винды.

ну и не мешало бы прочитать тут http://msdn.microsoft.com/en-us/library/ms997507.aspx



Вот тебе для примера прожки с Layered Window

Это сообщение отредактировал(а) Dem_max - 27.1.2011, 05:40

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  OSD_Editor.zip 439,14 Kb


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
borisbn
Дата 27.1.2011, 09:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 6
Всего: 135



Singular, посмотри статью из MSDN, которую тебе посоветовал Dem_max, там в самом конце пример fade (не знаю как перевести) окна - именно то, что тебе нужно.

И ещё идейка. Бесплатная, т.к. взята у Apple на MacBook smile
После (или во время) делания screen-shoot'а воспроизвести звук фото-затвора (как на телефонах с камерой делают), а потом на 100-200 мс залить весь экран белым и вернуть его в начальное состояние - эдакий эффект вспышки. Оч. красиво смотрится.
Итого: если сделать такой алгоритм
Код

- нажали кнопку SceenShoot
- окно где-то за 10 шагов по 50...100 мс стало прозрачным, а потом скрылось
- собственно bitblt
- звук фото-затвора
- белый экран на ~150 мс
- нормальный экран
- появляется основное окно (fade'ом или сразу - поэкспериментируй)

то IMHO будет очень даже прелестно


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Dem_max
Дата 27.1.2011, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



да и еще вот свежая темка http://forum.sources.ru/index.php?showtopic=323384
спроси у автора у него готовый код уже есть, я думаю что он поделится.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
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.2411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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