F-IN-BOX DLL Edition Help >> Extensions >> Functions

FPCSetGlobalOnLoadExternalResourceHandler [deprecated]

Syntax

[ C++ ]
  1. typedef HRESULT (WINAPI *PLOADEXTERNALRESOURCEHANDLER)(LPCSTR lpszURL, IStream** ppStream);  
  2. void WINAPI FPCSetGlobalOnLoadExternalResourceHandler(PLOADEXTERNALRESOURCEHANDLER pHandler);  

Description

You can intercept and provide content of external resource a flash movie are loading. For instance, Flash Video. To play Flash Video from memory you should create flash movie that loads Flash Video from "private" URL (e.g., "http://FLV/FlashVideo.flv"). Flash Movie uses the following code to load Flash Video (put this in under a button in your Swf Flash Movie):

[ ActionScript ]
  1. var netConn:NetConnection = new NetConnection();  
  2. netConn.connect(null);  
  3. var netStream:NetStream = new NetStream(netConn);  
  4. my_video.attachVideo(netStream);  
  5. netStream.setBufferTime(0);  
  6. netStream.play("http://FLV/FlashVideo.flv");  

When Flash tries to load Flash Video from http://FLV/FlashVideo.flv, FlashPlayerControl provides content of FLV. Use function FPCSetGlobalOnLoadExternalResourceHandler to set handle the external resources and provide them to Flash. See the code:

[ C++ ]
  1. HRESULT WINAPI GlobalOnLoadExternalResourceHandler(LPCSTR lpszURL, IStream** ppStream);  
  2. ...  
  3. FPCSetGlobalOnLoadExternalResourceHandler(&GlobalOnLoadExternalResourceHandler);  
  4. ...  
  5. HRESULT WINAPI GlobalOnLoadExternalResourceHandler(LPCSTR lpszURL, IStream** ppStream)  
  6. {  
  7.    HRESULT hr = E_FAIL;  
  8.   
  9.    if (0 == lstrcmpiA(lpszURL, "http://FLV/FlashVideo.flv"))  
  10.    {  
  11.       // Create stream  
  12.       IStream* pMemStream = NULL;  
  13.       CreateStreamOnHGlobal(NULL, TRUE, &pMemStream);  
  14.   
  15.       // Save flash video to the stream from the resource  
  16.       HMODULE hModule = GetModuleHandle(NULL);  
  17.       HRSRC hResInfo = FindResource(hModule, _T("EMBEDDED_FLV"), _T("FLV"));  
  18.       HGLOBAL hResData = LoadResource(hModule, hResInfo);  
  19.       LPCVOID lpData = LockResource(hResData);  
  20.       DWORD dwSize = SizeofResource(hModule, hResInfo);  
  21.   
  22.       ULONG nWritten;  
  23.       pMemStream->Write(lpData, dwSize, &nWritten);  
  24.   
  25.       // Seek stream position to the begin  
  26.       LARGE_INTEGER liZero = { 0 };  
  27.       ULARGE_INTEGER ulNewPosition;  
  28.       pMemStream->Seek(liZero, STREAM_SEEK_SET, &ulNewPosition);  
  29.   
  30.       *ppStream = pMemStream;  
  31.       hr = S_OK;  
  32.    }  
  33.   
  34.    return hr;  
  35. }  


Copyright © Softanics. All rights reserved.
F-IN-BOX is a trademark of Softanics.
Macromedia and Shockwave Flash are trademarks of Adobe