資原始檔讀取_檔案_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
相關文章
- vc實現https檔案下載HTTP
- VC++學習筆記---配置檔案(一) ini檔案和propritiesC++筆記
- iOS 基礎01--專案檔案、applecation、啟動過程、VC生命週期iOSAPP
- 讀取資料夾檔案
- 無法讀取來源檔案或磁碟
- 使用yaml檔案讀取資料YAML
- Java 專案讀取 resource 資原始檔路徑問題Java
- 自定義 loader 讀取 *.vue 檔案原始碼Vue原始碼
- 任意檔案讀取
- Java 讀取檔案Java
- go配置檔案讀取Go
- python讀取大檔案Python
- springboot讀取配置檔案Spring Boot
- 用友任意檔案讀取
- viper 讀取配置檔案
- matlab讀取npy檔案Matlab
- python小白檔案讀取Python
- cocos讀取plist檔案
- python 讀取文字檔案Python
- IOC - 讀取配置檔案
- 前端讀取excel檔案前端Excel
- 讀取檔案流並寫入檔案流
- Springboot整合MongoDB儲存檔案、讀取檔案Spring BootMongoDB
- 【轉載】SAP 系統中STO+VC 技術實現
- vc code 配置
- C#讀取文字檔案和寫文字檔案C#
- spark直接讀取本地檔案系統的檔案Spark
- Pandas之EXCEL資料讀取/儲存/檔案分割/檔案合併Excel
- 使用openpyxl庫讀取Excel檔案資料Excel
- 矽谷頂級VC發聲:AI技術公司毛利實在太低,人工和算力成本太高AI
- Java動態指令碼Groovy讀取配置檔案Java指令碼
- java中讀取配置檔案Java
- go–讀取檔案的方式Go
- C#讀取Xml檔案C#XML
- pg從磁碟讀取檔案
- Spring之Property檔案讀取Spring
- 01 讀取模板HTML檔案HTML
- go 讀取.ini配置檔案Go
- 6.1檔案下載、讀取