把資源載入到記憶體中 BMP 出錯

2022-03-09 12:22:23 字數 844 閱讀 3657

bmp檔案放到vs的資源中時,vs會將bmp的檔案頭去掉,即bitmapfileheader,這個結構體去除。所以當載入bmp到記憶體中時,如果是使用gdi+或是其它解釋庫時,會解析失敗。

所以在讀取bmp資源時,需要加上bitmapfileheader結構體。

// pvresdata  為已經讀入到記憶體的bmp資料。

//獲得位圖資訊頭

bitmapinfoheader bmpinfohdr;

copymemory(&bmpinfohdr, pvresdata, sizeof(bitmapinfoheader));

//獲得位圖顏色表中rgbquad結構的個數

long ncolorentries;

switch(bmpinfohdr.bibitcount)

//根據位圖資訊頭建立位**件頭

bitmapfileheader bmpfilehdr;

bmpfilehdr.bftype = 0x4d42; // 'bm'

bmpfilehdr.bfsize = sizeof(bitmapinfoheader) + dwressize;

bmpfilehdr.bfreserved1 = bmpfilehdr.bfreserved2 = 0;

bmpfilehdr.bfoffbits = sizeof(bitmapfileheader) + sizeof(bitmapinfoheader) + sizeof(rgbquad) * ncolorentries;

//寫入位**件頭

//...

// 再寫入 pvresdata

參考:

把redis載入到window服務裡

這兩天在重新做公司內網首頁,資訊都是從別的系統獲取的,產品原來打算直接上靜態頁,jsonp非同步取資料。但是一來jsonp比較坑 一直不喜歡 二來整個頁面的資料都非同步獲取的話,剛剛開啟頁面的時候會空白一片,體驗極其差。所以決定用node.js express redis簡單搞下。今天早晨一直在折騰...

C 將檔案載入到記憶體

filestream fs new filestream strfile,filemode.open byte aa new byte fs.length 1 fs.read aa,0,int fs.length 1 fs.close fs.dispose file.delete strfile w...

MFC選單資源ID載入到對話方塊上

方法1 首先定位到顯示選單欄對話方塊的oninitdialog 函式處,在其函式體裡新增如下 cmenu menu menu.loadmenuw idr menu1 載入資源選單欄,idr menu1為資源檢視裡選單的id this setmenu menu 這個函式將當前選單設為指定的選單。它使視...