我正在用C ++构建一个dll,以便导入到VB项目中。 dll公开了一个函数,它将通过Win Shell提取指定文档的预览图像,然后将其写入缓冲区以供VB应用程序使用。
到目前为止,我能够毫无问题地获得HBITMAP句柄。我还能够使用GetBitmapBits函数提取位图数据。但是,这不起作用,因为需要位数据的对象需要它是与设备无关的格式。
我已经读过GetDiBits是用于此目的的函数,但是我很难弄清楚如何成功调用该函数。
我应该使用哪种设备上下文?另外,如何确保以设备无关格式写出数据?
提前致谢。
答案 0 :(得分:0)
如果您的HBITMAP引用了设备相关的位图,并且您需要与设备无关的位,则必须转换它们。尝试创建一个CImage并调用BitBlt方法将设备无关位放入其中。