Bitmap из памяти
От: LukS  
Дата: 06.04.09 13:45
Оценка:
Есть переменная:
char *bmp_data = (char*)malloc(sizeof(char)*2048);

Необходимо в переменную типа HANDLE запихать картинку (bitmap).
Вот код с загрузкой из ресурсов:
...
HADNLE image = LoadImage(g_hInstance, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
HGDIOBJ oldimg = SelectObject(bitDC, image);
...

Соответственно в переменной bmp_data у меня будет уже сама BMP картинка (я её сгенирировал другой библиотекой). Вопрос: как "впихнуть" эту картинку в HANDLE для того чтобы дальше с ней рисовать и т.д. (я вывожу её на форму).

P.S. msvc 2008 ; только WinAPI

06.04.09 20:07: Перенесено модератором из 'C/C++' — Кодт
Re: Bitmap из памяти
От: Danchik Украина  
Дата: 06.04.09 14:46
Оценка:
Здравствуйте, LukS, Вы писали:

[Skip]

Через WinAPI так просто не сделать. Советую создать временный файл и читать из него через LoadImage.
CreateBitmapIndirect может помочь, но там придется сначала самому пропарсать заголовок bitmap и подсунуть указатель с правильным смещением.
Re: Bitmap из памяти
От: andrey.desman  
Дата: 06.04.09 15:01
Оценка:
Здравствуйте, LukS, Вы писали:

LS>P.S. msvc 2008 ; только WinAPI


Bitmap storage, CreateDIBitmap.
Re[2]: Bitmap из памяти
От: LukS  
Дата: 06.04.09 15:47
Оценка:
Спасибо. Получается есть 2 пути:
1. Загрузить картинку в temp-директорию (кстати, вопрос, а как определить где находиться "ApplicationData"? Т.е. папочка C:\Documents and Settings\[Skip]\Local Settings\Application Data)
2. Вручную парсить весь хидер...

Попробую поискать документацию по структурам BITMAPFILEHEADER, может что-нибудь выкопаю...
Re: Bitmap из памяти
От: Чили Россия  
Дата: 07.04.09 05:32
Оценка:
Здравствуйте, LukS, Вы писали:

LS>Соответственно в переменной bmp_data у меня будет уже сама BMP картинка (я её сгенирировал другой библиотекой). Вопрос: как "впихнуть" эту картинку в HANDLE для того чтобы дальше с ней рисовать и т.д. (я вывожу её на форму).


Посмотри примеры к функции SetDIBits()
Re[3]: Bitmap из памяти
От: Аноним  
Дата: 07.04.09 10:43
Оценка:
Здравствуйте, LukS, Вы писали:
LS>1. Загрузить картинку в temp-директорию (кстати, вопрос, а как определить где находиться "ApplicationData"?
LS>Т.е. папочка C:\Documents and Settings\[Skip]\Local Settings\Application Data)
Смотрите функцию SHGetFolderPath(...,CSIDL_APPDATA,...), ее описание есть в MSDN.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.