我正在C++中構建一個dll以導入到VB項目中。 dll公開了一個函數,它將通過Win Shell提取指定文檔的預覽圖像,然後將其寫入緩衝區以供VB應用程序使用。需要設備無關的位圖位
到目前爲止,我能夠得到HBITMAP句柄沒有問題。我也能夠使用GetBitmapBits函數提取位圖數據。但是,這將不起作用,因爲需要位數據的對象需要它是獨立於設備的格式。
我讀過GetDiBits是用於此目的的函數,但我很難弄清楚如何成功調用函數。
我應該使用什麼設備上下文?另外,如何確保以獨立於設備的格式寫出數據?
在此先感謝。
因此,我在這個項目上取得了一些進展。我找到了有關GetDiBits函數的輔助幫助文檔(http://support.microsoft.com/kb/74601)。 api文檔根本沒有解釋在頭結構上執行的檢查列表。所以,現在已經不存在了,我能夠成功地執行該功能並提取一些位圖數據。 – JString
現在我遇到的問題顯然是設備環境或其他問題。我正在用24位顏色的100x100像素圖像測試我的代碼。使用GetDiBits提取的數據的大小正是該大小的圖像所預期的大小。但是,DIB應該具有額外的數據,例如標題以及不能在設備之間傳遞的數據。所以也許我甚至沒有使用正確的功能呢? 提醒一下,我需要將DIB數據傳遞給vb項目中的對象。 – JString