如果我使用窗口激活(在HWND
函数中为Flash播放器提供有效GetWindow
足以触发此操作),播放器将运行加载的swf文件。但是,如果我使用无窗口激活,则加载的文件不会运行,只会显示第一帧。 This article声称我应该致电
DoVerb(OLEIVERB_SHOW, NULL, (IOleClientSite *)this, 0, NULL, NULL);
但是,这没有任何效果。我做错了什么?
编辑:自从我发了这篇文章后,我发现它返回-2147467259,这不是已知的HRESULT,但肯定不是0.这是什么意思?经过多次挖掘后,我发现返回值为OLE_E_NOTRUNNING
。
答案 0 :(得分:0)
我发现了这个问题。在此电话会议之前,我正在做:
hr = _shockwaveFlash->put_WMode(BSTR("opaque"));
但是我公然忽略了那里的HRESULT。它使Flash Player感到困惑,因为它不是在代码中插入BSTR
常量的有效方法(这是一个宽字符串)。正确地:
hr = _shockwaveFlash->put_WMode(L"opaque");
现在它可以正常工作。检查你的HRESULT,孩子:)