Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将HBITMAP转换为字节数组_C++_Winapi_Gdi - Fatal编程技术网

C++ 将HBITMAP转换为字节数组

C++ 将HBITMAP转换为字节数组,c++,winapi,gdi,C++,Winapi,Gdi,我正在使用一些ScannerAPI,它返回BMP格式图像的句柄(文档中也这么说)。我试图以某种方式从此句柄获取位图,但例如,此代码不起作用: HANDLE handle = getHandleFromScanner(); BITMAP bitmap; int u = GetObject(handle, sizeof(BITMAP), &bitmap); u在这里是0,getLastError()返回6,这意味着句柄无效。但是除了通过getHandleFromScanner()函数之外,

我正在使用一些ScannerAPI,它返回BMP格式图像的句柄(文档中也这么说)。我试图以某种方式从此句柄获取位图,但例如,此代码不起作用:

HANDLE handle = getHandleFromScanner();
BITMAP bitmap;
int u = GetObject(handle, sizeof(BITMAP), &bitmap);
u在这里是0,getLastError()返回6,这意味着句柄无效。但是除了通过
getHandleFromScanner()
函数之外,我无法获得任何其他句柄

是否应该使用此句柄进行一些转换?有什么想法吗?使用位图句柄的正确方法是什么?或者存在任何简单的api?我通过谷歌找到的样本对我没有帮助

非常感谢。

你试过了吗?这应该是可行的,但您也需要设备上下文。您可能总是想调用句柄,看看它是否真的返回HBITMAP。

谢谢各位

句柄似乎是图像本身,因此以下代码解决了该问题:

char* pImage = NULL;
HANDLE hImage= getHandleFromScanner();
pImage = (char *)GlobalLock(hImage);
// pImage now contains the bytes of the image

如果有人需要它,扫描仪是Olivetti PR2 plus扫描仪。

谢谢。GetObjectType()为句柄返回0,这意味着它无法识别句柄类型。扫描器似乎返回了一些错误格式的图像。如果它真的返回了位图,那么它应该返回一个HBITMAP,而不是句柄。继续浏览API以了解如何使用此句柄。