好的,让它正常工作是一场噩梦,所以我决定把它放到别人身上。
托管flash activex要求您使用实现SetClass的IStorage调用OleCreate(可以是no-op),以及实现的IOleClientSite:
IOleInPlaceSiteEx:
OnInPlaceActivateEx() (no-op)
GetWindow()
GetWindowContext()
IOleClientSite:
ShowObject() (no-op)
但是,加载的swf访问的任何外部资源必须是完全限定的,否则它将失败并出现如下错误:
Error #2032: Stream Error. URL: file://<relative path>
我发布了我想出的答案,告诉我这是不是Propper Stackettique。
答案 0 :(得分:0)
要解决此问题,您的IOleClientSite还必须实现IServiceProvider :: QueryService()以返回实现CreateMoniker()的IBindHost:
return CreateURLMonikerEx(pmkBase, szName, ppmk, URL_MK_UNIFORM);
其中pmkBase是具有基本路径的URL Moniker,例如:
OLECHAR szPath[MAX_PATH];
int cch = ::GetCurrentDirectory(ARRAYSIZE(szPath), szPath);
// GetCurrentDirectory does not finish with \, which causes the top directory to be removed :(
// Also, error checking is for pansies.
szPath[cch++] = L'\\';
szPath[cch++] = 0;
CreateURLMonikerEx(0, szPath, &pmkBase, URL_MK_UNIFORM);