CAnimateCtrl::Open(LPCTSTR) 需外部 AVI 文件,發布時易遺漏/被刪。最佳方案是將 AVI 嵌入 EXE 資源,使用 Open(UINT nID) 重載。
myanim.avi 放入專案 res 目錄。.rc 文件中手動添加:IDR_MYANIMATION AVI DISCARDABLE "res\\myanim.avi"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實現資源文件的文檔式加載。