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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с PrintWindow 
:(
    Опции темы
GP1000
Дата 5.3.2009, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




С определенной частотой рисую окно  с помощью  PrintWindow(). Затем сохраняю получившиеся изображение в файл .
Для некоторых окошек  иногда приходят рисунки с неотрисованной (черной )внутренностью . То есть видно заголовок и все остальное   в окне а содержимое поля  не отрисовывается . Для примера стандартный блокнот - видно заголовок ,меню , а вместо поля с текстом черный квадрат . 
При увеличении частоты количество "черных  кадров" возрастает. 
Создается впечатление , что при отрисовке в контекст устройства с помощью PrintWindow(),посылаемое сообщение о отрисовке  просто не доходит до некоторых элементов внутри окна и в итоге функция возвращает такой вот неполный контекст . 
Может кто сталкивался  с такой проблемой ? 
Интересует вариант именно с PrintWindow так как нужно рисовать неактивные окна . 
PM MAIL   Вверх
Andrey44
Дата 6.3.2009, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

This function is similar to WM_PRINT. Before calling PrintWindow, first select a bitmap into hdcBlt.


Посмотри WM_PRINT там по-моему передаются какие-то флаги. Попробуй обрабатывать сам в обход PrintWindow.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
GP1000
Дата 11.3.2009, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за совет ,
но с использованием WM_PRINT в DC возвращается просто черная битмапина вместо изображения окна. 
Здается мне  что PrintWindow  как то по другому  захватывает изображение окна нежели отсылкой WM_PRINT c подготовленным DC . 
И еще вопрос . если мы посылаем окну сообщение WM_PRINT значит где то в теле  оконной процедуры должен стоять его обработчик ?Часто ли мы создавая свои программы пишем обработчик для этого сообщения ??  smile Или я чего то недопонимаю ?? 

PM MAIL   Вверх
GP1000
Дата 11.3.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добавлю 
В принципе PrintWindow устраивает полностью,  единственное но   -  с увеличением частоты увеличиваются 
"бракованные " кадры . 
Можно захватывать изображение с малой частотой , а можно и вообще только  по след условию если  нужное окно перекрыли другим окном . Кажется есть способ с установкой хука на определенные события (какие?) , но если это чужой процесс то нужно еще и думать о том как внедрить свою dll в процесс .
Может есть более простые пути? Может кто сталкивался??
PM MAIL   Вверх
Andrey44
Дата 12.3.2009, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



GP1000, ты в какой оси программируешь?


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
GP1000
Дата 12.3.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Windows вообще то  smile 
PM MAIL   Вверх
Andrey44
Дата 12.3.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



GP1000,  smile их много!


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
GP1000
Дата 12.3.2009, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну судя из MSDN 
Цитата

Requirements
Minimum supported client    Windows XP
Minimum supported server    Windows Server 2003

использую Windows XP  smile , но то все неважно..

Добавлено через 2 минуты и 41 секунду
Это требования к PrintWindow
PM MAIL   Вверх
Andrey44
Дата 13.3.2009, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Это понятно, но если бы ты писал в Висте было бы все намного проще сделать используя DWM API smile 

Это сообщение отредактировал(а) Andrey44 - 13.3.2009, 07:53


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

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


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

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


 




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


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

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