0

如果我使用窗口激活(HWND在函数中给 Flash 播放器一个有效GetWindow就足以触发它),播放器将运行加载的 swf 文件。但是,如果我使用无窗口激活,加载的文件不会运行,只显示第一帧。这篇文章声称我应该打电话给

DoVerb(OLEIVERB_SHOW, NULL, (IOleClientSite *)this, 0, NULL, NULL);

但是,这没有任何效果。我究竟做错了什么?

编辑:自从我发表这篇文章后,我发现它返回 -2147467259,这不是已知的 HRESULT,但肯定不是 0。这是什么意思?

经过一番挖掘,我发现返回值为OLE_E_NOTRUNNING.

4

1 回答 1

0

我发现了问题。在这个电话之前,我在做:

hr = _shockwaveFlash->put_WMode(BSTR("opaque"));

但我公然忽略了那里的 HRESULT。它使 Flash Player 感到困惑,因为它不是BSTR在代码中插入常量(这是一个宽字符串)的有效方法。正确:

hr = _shockwaveFlash->put_WMode(L"opaque");

现在它可以正常工作了。检查你的 HRESULT,孩子们:)

于 2012-06-21T08:19:01.493 回答