Это то, что я сейчас делаю для загрузки изображений в мое приложение:
auto b = ::FreeImage_Load(type, path.c_str());
void *bits;
auto hbmp = CreateDIBSection(
dc,
FreeImage_GetInfo(bitmap),
DIB_RGB_COLORS,
&bits,
0,
0
);
std::memcpy(bits, FreeImage_GetBits(b), size);
Это работает очень хорошо, но я бы хотел избежать выделения памяти дважды - ::FreeImage_Load
уже хранит данные в путиэто подходит для бабки.Есть ли способ вызова CreateDIBSection
, который бы предотвращал выделение и заставлял dib, созданный таким образом, использовать предоставленный мной буфер?Если нет, то есть ли другой способ, который позволил бы это?
Кажется, что предоставление NULL
вместо **ppvBits
предотвращает выделение - есть ли способ изменить адрес буфера позже?Я также пытался возиться с параметром hSection
, но созданные таким образом метки были неверными.