資原始檔讀取_檔案_VC技術文章_VC源動力
導讀:
//
// 從資源中讀取資料
//
LONG GetDataFromRes(PBYTE pData,UINT nIDResource)
{
// 將資源ID轉成資源名稱
LPSTR szResourceName = MAKEINTRESOURCE(LOWORD(nIDResource));
// 資源的型別
LPSTR szResourceType = "BIN_DATA";
// 查詢資源控制程式碼
HRSRC hRes = FindResource(NULL, szResourceName,szResourceType);
// 獲得資源資料的控制程式碼
HGLOBAL hResData;
if (!hRes || !(hResData = LoadResource(NULL,hRes)))
{
return -1;
};
// 資源資料的大小
DWORD dwSize = SizeofResource(NULL,hRes);
if(pData == NULL)
{
return dwSize;
}
// 資源加鎖
PBYTE pSrc = (PBYTE)LockResource(hResData);
if (!pSrc)
{
FreeResource(hResData);
return -1;
};
// 複製資料
CopyMemory(pData,pSrc,dwSize);
// 釋放資源
FreeResource(hResData);
return dwSize;
}
//
// DUMP生成檔案
//
BOOL MakeFileFromData(PBYTE pData,LONG lSize,LPCSTR lpszFilePath)
{
if(pData == NULL || lpszFilePath == NULL || lpszFilePath[0] == '/0')
return FALSE;
HANDLE hFile = CreateFile(
lpszFilePath,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_HIDDEN,
NULL
);
if(hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
DWORD dwWrited = 0;
BOOL bRet = WriteFile(hFile,pData,lSize,&dwWrited,NULL);
CloseHandle(hFile);
return bRet;
}
本文轉自
http://www.xiaozhou.net/ReadNews.asp?NewsID=225
有時我們會在資源里加上一些檔案,BMP、ICON、WAVE等檔案讀取時沒什麼問題,
主要的區別在於RT_TOOLBAR,RT_MENU,RT_...
HINSTANCE hInst = AfxFindResourceHandle(lpszResourceName, RT_TOOLBAR);
HRSRC hRsrc = ::FindResource(hInst, lpszResourceName, RT_TOOLBAR);
if (hRsrc == NULL)
return FALSE;
HGLOBAL hGlobal = LoadResource(hInst, hRsrc);
if (hGlobal == NULL)
return FALSE;
CToolBarData* pData = (CToolBarData*)LockResource(hGlobal);
//
// 從資源中讀取資料
//
LONG GetDataFromRes(PBYTE pData,UINT nIDResource)
{
// 將資源ID轉成資源名稱
LPSTR szResourceName = MAKEINTRESOURCE(LOWORD(nIDResource));
// 資源的型別
LPSTR szResourceType = "BIN_DATA";
// 查詢資源控制程式碼
HRSRC hRes = FindResource(NULL, szResourceName,szResourceType);
// 獲得資源資料的控制程式碼
HGLOBAL hResData;
if (!hRes || !(hResData = LoadResource(NULL,hRes)))
{
return -1;
};
// 資源資料的大小
DWORD dwSize = SizeofResource(NULL,hRes);
if(pData == NULL)
{
return dwSize;
}
// 資源加鎖
PBYTE pSrc = (PBYTE)LockResource(hResData);
if (!pSrc)
{
FreeResource(hResData);
return -1;
};
// 複製資料
CopyMemory(pData,pSrc,dwSize);
// 釋放資源
FreeResource(hResData);
return dwSize;
}
//
// DUMP生成檔案
//
BOOL MakeFileFromData(PBYTE pData,LONG lSize,LPCSTR lpszFilePath)
{
if(pData == NULL || lpszFilePath == NULL || lpszFilePath[0] == '/0')
return FALSE;
HANDLE hFile = CreateFile(
lpszFilePath,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_HIDDEN,
NULL
);
if(hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
DWORD dwWrited = 0;
BOOL bRet = WriteFile(hFile,pData,lSize,&dwWrited,NULL);
CloseHandle(hFile);
return bRet;
}
本文轉自
http://www.xiaozhou.net/ReadNews.asp?NewsID=225
相關文章
- VC6 UTF-8檔案讀寫
- vc++上傳檔案C++
- vc判斷檔案是否存在
- vc++實現檔案關聯C++
- 用VC++實現一個文字檔案閱讀器C++
- VC操作登錄檔
- vc實現https檔案下載HTTP
- VC從檔案中載入圖片
- VC自定義資源
- 在VC++下對檔案屬性的獲取與更改(轉)C++
- makefile檔案及VC++自帶的NmakeC++
- 技術文章存檔
- VC++學習筆記---配置檔案(一) ini檔案和propritiesC++筆記
- VC備份時可以刪除的檔案 (轉)
- VC++中用記憶體對映檔案 (轉)C++記憶體
- VC6修改lib檔案的輸出路徑
- 解決VC中增加類檔案的問題 (轉)
- BMP點陣圖檔案結構及VC操作 (轉)
- HDFS讀檔案過程分析:讀取檔案的Block資料BloC
- 無法讀取來源檔案或磁碟
- Java 專案讀取 resource 資原始檔路徑問題Java
- 使用yaml檔案讀取資料YAML
- Java 讀取檔案Java
- tiff檔案讀取
- java讀取ApplicationResources.properties資原始檔JavaAPP
- 自定義 loader 讀取 *.vue 檔案原始碼Vue原始碼
- 【Spring原始碼分析】配置檔案讀取流程Spring原始碼
- python讀取檔案——python讀取和儲存mat檔案Python
- vc6.0程式除錯技術總結除錯
- VC眼中的十大技術趨勢
- 在VC中自建操作BMP點陣圖檔案的類 (轉)
- iOS 基礎01--專案檔案、applecation、啟動過程、VC生命週期iOSAPP
- viper 讀取配置檔案
- go配置檔案讀取Go
- iOS讀取.csv檔案iOS
- php 讀取超大檔案PHP
- JAVA 讀取xml檔案JavaXML
- WinForm讀取Excel檔案ORMExcel