CString Type="swf";
HRSRC res=FindResource (NULL,Name,Type);
HGLOBAL gl=LoadResource (NULL,res); 當(dāng)資源加載到內(nèi)存后,還要通過對(duì)資源內(nèi)存的鎖定來返回指向資源內(nèi)存的地址的指針,并籍此實(shí)現(xiàn)資源從內(nèi)存到磁盤的保存,至于存盤的操作則由文件函數(shù)CreateFile()、和WriteFile()來完成: LPVOID lp=LockResource(gl); //返回指向資源內(nèi)存的地址的指針。
CString filename="Temp.swf"; //保存的臨時(shí)文件名
// CREATE_ALWAYS為不管文件存不存在都產(chǎn)生新文件。
fp= CreateFile(filename ,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
DWord a;
//sizeofResource 得到資源文件的大小
if (!WriteFile (fp,lp,SizeofResource (NULL,res),&a,NULL))
return false;
CloseHandle (fp); //關(guān)閉句柄
FreeResource (gl); //釋放內(nèi)存 通過上述代碼,可將SWF資源從應(yīng)用程序中提取并釋放到臨時(shí)文件Temp.swf中,在此后只對(duì)此臨時(shí)文件操作,與程序內(nèi)嵌資源無關(guān)。 Flash動(dòng)畫的播放 swf格式的Flash動(dòng)畫通常主要應(yīng)用在網(wǎng)頁上,也就是說IE瀏覽器本身可以支持Flash動(dòng)畫的播放。這樣就不必再單獨(dú)編寫用于播放swf文件的代碼,從而大大減少編程的工作量。在VC ++ 6.0中新增了一個(gè)從CView派生的、用于處理網(wǎng)頁的視類CHtmlView,由于該類是以Internet EXPlorer為后臺(tái)支持,因此在創(chuàng)建工程時(shí)只需在最后一步指定視類從CHtmlView派生就可以使程序不編一行代碼而具備IE瀏覽器的網(wǎng)頁顯示能力。 程序剛生成的時(shí)候缺省的連接主頁是為微軟公司的主頁,需要對(duì)此修改,使程序在執(zhí)行時(shí)立即顯示剛才提取出來的Flash臨時(shí)文件Temp.swf。顯示缺省主頁的代碼是在視類的初始化函數(shù)中進(jìn)行的:void CEmbedModuleView::OnInitialUpdate()
{
CHtmlView::OnInitialUpdate();
Navigate2(_T("http://www.microsoft.com"),NULL,NULL);
}//獲取應(yīng)用程序的全路徑
char exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
//將其格式化為字符串
m_TempFile.Format("%s",exeFullPath);
//去掉應(yīng)用程序的全名(15為應(yīng)用程序文件全名的長度)
exeFullPath[m_TempFile.GetLength()-15]='/0';
//得到應(yīng)用程序所在路徑
m_TempFile.Format("%s",exeFullPath);
//得到臨時(shí)文件的全路徑
m_TempFile+="Temp.swf"; 最后將得到的臨時(shí)文件的全路徑m_TempFile作為參數(shù)傳遞給Navigate2()即可在程序運(yùn)行時(shí)把Flash動(dòng)畫作為主頁而顯示(如下圖所示)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注