Получить Bitmap / DC форм с вкладками MDI - PullRequest
1 голос
/ 14 ноября 2011

У меня есть набор форм, которые визуализируются как дочерние элементы MDI основной формы (через InfraTistics UltraTabbedMDIManager, но этот API не так важен)

Я использую GetDC (), CreateCompatibleDC (),CreateCompatibleBitmap (), SelectObject (), BitBlt () .., чтобы поместить растровое изображение контекстов устройства этих форм в некоторую память.Это работает, но только для активной дочерней формы MDI, той, которая видна пользователю.Если я делаю это для форм, которые не активны (любые вкладки, которые в данный момент не отображаются), я получаю черный экран в области памяти или даже получаю «копию» экрана над ним.Если я делаю это для форм, которые больше не видны, я также получаю черный экран.

Что я должен сделать, чтобы получить растровое изображение этих скрытых форм?Нужно ли прибегать к кешированию или я могу использовать еще одну хитрость?Я не могу использовать функцию Winforms DrawToBitmap (), потому что формы содержат некоторые низкоуровневые графические объекты, которые нельзя получить с помощью них.Как я могу использовать winapi для получения растрового изображения этих «скрытых» форм DC?

1 Ответ

0 голосов
/ 16 ноября 2011

Мне удалось сделать это с помощью API PrintWindow в user32.dll.Это решает проблему вкладок MDI, но не решает проблему скрытых форм.Я решил эту проблему, кратко выставив формы в каком-то закадровом месте.Кажется, что «окончательный» способ - это использовать (недокументированный) файл dwm.dll, но это не очень рекомендуется, поскольку интерфейсы отличаются в разных версиях Windows.

...