首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

CAnimateCtrl::Open 從資源加載 AVI 動畫的正確姿勢

     編輯:關於VC++

問題

CAnimateCtrl::Open(LPCTSTR) 需外部 AVI 文件,發布時易遺漏/被刪。最佳方案是將 AVI 嵌入 EXE 資源,使用 Open(UINT nID) 重載。

資源嵌入步驟

  1. 將 myanim.avi 放入專案 res 目錄。
  2. 在 .rc 文件中手動添加:
    IDR_MYANIMATION AVI DISCARDABLE "res\\myanim.avi"
  3. IDR_MYANIMATION 需在 resource.h 定義為整數 ID(不能用字符串)。

資源編譯器會逐字節拷貝 AVI 到 EXE,動畫控件可直接通過 ID 找到。

通用資源嵌入模式

同理可嵌入任意文件類型(自定義類型 FOO):


IDR_MYFOOFILE FOO DISCARDABLE "res\\myfile.foo"

運行時訪問嵌入資源


HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hRsrc = ::FindResource(hInst, MAKEINTRESOURCE(IDR_MYFOOFILE), _T("FOO"));
DWORD len = SizeofResource(hInst, hRsrc);
BYTE* pData = (BYTE*)LoadResource(hInst, hRsrc);

// 像文件一樣讀取
CMemFile file(pData, len);
file.Read(buffer, size);

甚至可構造 CMemFile 傳給 CDocument::OnOpenDocument 實現資源文件的文檔式加載。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved