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