Вопрос № 83569: Что необходимо указывать в первом параметре функции GetDIBits? Какой именно контекст? (в МСДН этого не указано). И зачем он может понадобиться функции?...
Вопрос № 83.569
Что необходимо указывать в первом параметре функции GetDIBits? Какой именно контекст? (в МСДН этого не указано). И зачем он может понадобиться функции?
Отправлен: 21.04.2007, 15:50
Вопрос задал: Mystic (статус: 6-ой класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: PGM
Здравствуйте, Mystic!
Всю жизнь указывал в качестве первого параметра контекст, в котором был создан битмап из второго параметра (если использовал битмар-объект Дельфи, то Bitmap.Canvas.Handle).
Зачем этот параметр нужен функции - возможно для заполнения структуры lpbi, когда lpvBits = NULL. А может просто для удобства разработчиков этой функции :).
Ответ отправил: PGM (статус: 5-ый класс)
Ответ отправлен: 22.04.2007, 00:53 Оценка за ответ: 5
Отвечает: Ross
Здравствуйте, Mystic!
В описании функции CreateBimap написано, что с ее помощью создается битмап зависимый от устройства вывода (device-dependent bitmap).
Поэтому для обратного превращения его в последовательность байт нужно знать, для какого устройства он был создан.
--------- Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: 8-ой класс)
Ответ отправлен: 22.04.2007, 01:07 Оценка за ответ: 5
Отвечает: Sergey A. Wedensky
Здравствуйте, Mystic!
Всегда загонял HDC десктопа - работало...
HDC dc = ::GetWindowDC(::GetDesktopWindow());
GetDIBits(dc,...);
ReleaseDC(::GetDesktopWindow(), dc);
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 23.04.2007, 10:37 Оценка за ответ: 4 Комментарий оценки: Спасибо конечно, но вы не ответили, зачем он нужен или как влияет на загружаемые биты (или инфу о битмапе).