вопрос по WinAPI:
хочу, получив хэндл битмапа находящегося в буфер, сохранить данный битмап где-нибудь на физичесском носителе. получаю хэндл битмапа так:
HANDLE hBitmap;
................
hBitmap = GetClipboardData(CF_BITMAP);
CloseClipboard();
подскажите пожалуйста как это можно реализовать.
bitmap и WinAPI
Модератор: Злобный
Файл BMP состоит из заголовка (BMP Header) и собственно данных. В заголовке содержатся метаданные (размер, глубина цвета, ... и смещение, т.е. позиция где собственно данные начинаются). Сами данные - это идущие друг за другом точки, цвет которых представлен в формате RGB (в простейшем случае). Единственная закавыка - все линии должны быть выровнены по DWORD-овской границе ("линии" выражение условное, т.к. данные физически не идут по линиям, а одним потоком), поэтому через определённые интервалы (в конце "логических" линий, по ширине изображения) возможно придётся вставлять дополнительные "пустышки". Вроде так, если мой склероз мне не изменяет.
Заголовки - стандартные структуры из WinAPI, BITMAPFILEHEADER кажись. Там, насколько я помню, всё просто - заполняешь эти структуры (BITMAPINFO тоже ещё должна быть), и прямиком их и пишешь в файл (только смещение подправить надо), а потом пишешь данные построчно, выравнивая по DWORD-у.
А вообще, MSDN спасёт отца русской демократии. Думаю, если порыться вокруг этих структурок и функций, где-нибудь там и примерчик найдётся.
Заголовки - стандартные структуры из WinAPI, BITMAPFILEHEADER кажись. Там, насколько я помню, всё просто - заполняешь эти структуры (BITMAPINFO тоже ещё должна быть), и прямиком их и пишешь в файл (только смещение подправить надо), а потом пишешь данные построчно, выравнивая по DWORD-у.
А вообще, MSDN спасёт отца русской демократии. Думаю, если порыться вокруг этих структурок и функций, где-нибудь там и примерчик найдётся.