시간상 flash8.ocx 에서의 문제점을 해결하고 있지 못하고 있습니다. 신형철님과의 짧은 메세지를 통해서 배운 편법을 적어놓습니다.
AttachAxControl() 함수에서
hr = ::CoCreateInstance(CLSID_ShockwaveFlash, NULL,
CLSCTX_ALL, __uuidof(IShockwaveFlash), (void **)&m_pSF);
부분을 다음과 같이 대체하셔서 강제로 이전버전의 flash.ocx를 로딩하는 방법입니다. 아래 폴더 경로에 flash.ocx 가 존재한다고 가정합니다.
HINSTANCE hInst = ::LoadLibrary(_T(“C:\\windows\\system32\\Macromed\\Flash\\Flash.ocx”));
ATLASSERT(NULL != hInst);
typedef HRESULT (STDAPICALLTYPE * FnGCO)(REFCLSID, REFIID, void **);
FnGCO pfnGCO = (FnGCO)::GetProcAddress(hInst, “DllGetClassObject”);
ATLASSERT(NULL != pfnGCO);
IClassFactory * pcf = 0;
hr = pfnGCO(CLSID_ShockwaveFlash, __uuidof(IClassFactory), reinterpret_cast<void **>(&pcf));
if(FAILED(hr))
return hr;
hr = pcf->CreateInstance(0, __uuidof(IShockwaveFlash), reinterpret_cast<void **>(&m_pSF));
pcf->Release();
pcf = NULL;