2014-06-19 476 views
2

我需要C++中的代碼從一側獲取HBITMAP並通過套接字發送,另一側接收並再次創建HBITMAP。通過套接字發送HBITMAP

它必須是快速和有效的

如果是更舒適,使用GDI +位圖

+0

您是否有將HBITMAP保存到文件的代碼?如果是這樣,那麼接下來的代碼,只是將字節流傳輸到套接字而不是文件。 – PaulMcKenzie

+0

不,我沒有 –

+0

那麼,首先做到這一點,即獲取將HBITMAP保存到文件的代碼。然後調整'fwrite'或者其他任何輸出函數來代替執行'發送'調用。您還需要知道如何讀取文件並創建適當結構的代碼。所有這些都是有據可查的,因爲這是Windows環境中的基本位圖處理。 – PaulMcKenzie

回答

1

是如此行不通的!

您需要做的是使用GetObject函數將HBITMAP轉換爲BITMAP。然後通過網絡序列化這個對象。注意:您需要確保正確序列化bmBits成員。

另一方面,一旦你已經反序列化BITMAP,你可以使用CreateBitmapIndirect得到一個HBITMAP

+0

您已經描述了發送位圖*標題*而不是位圖*數據*的過程。 –

+0

@MarkRansom - 位圖數據是「BITMAP」結構中的「bmBits」字段。 – Sean

+0

當位圖是與設備無關的位圖時,'bmBits'只包含acutal位圖數據。否則,您需要調用'GetDIBits'來獲取實際的位圖數據。 – TheSteve