How can I get image bytes from hbitmap if I am given an HBITMAP pointer, and my application is console application. I tryed using GetDIBits which require such parameter as
See new answer since question was edited...
You cannot do this without a handle to the device context (HDC
). This is because GetDIBits expects an HBITMAP
which is
A handle to the bitmap. This must be a compatible bitmap (DDB).
A DDB is a Device-Dependent Bitmap, (as opposed to a DIB, or Device-Independent Bitmap). That means:
Note that a DDB does not contain color values; instead, the colors are in a device-dependent format.
Which is why GetDIBits
requires an HDC
. Otherwise it cannot get the color information.
Perhaps a good question is, where did you get an HBITMAP
without an accompanying HDC
?
If you're trying to create this bitmap in memory, first you can call CreateCompatibleDC to create an in-memory DC compatible with some device, then CreateCompatibleBitmap with that DC. Then you have an HBITMAP
and HDC
to work with as you please. Otherwise, if you don't know what your HBITMAP
is pointing to, you can't expect to do anything useful with it.