之前写过 ocx 在客户端或网页上使用都没问题,但如果将 ocx 放到 web 服务器上后,再通过网页浏览时 ocx 无法显示,最后通过对 ocx 增加安全属性接口得以解决该问题。
xxxCtrl.h (xxx为项目名称)新增:
#include <ObjSafe.h>
DECLARE_INTERFACE_MAP()
BEGIN_INTERFACE_PART(ObjSafe, IObjectSafety);
STDMETHOD_(HRESULT, GetInterfaceSafetyOptions) (
REFIID riid,
DWORD __RPC_FAR *pdwSupportedOptions,
DWORD __RPC_FAR *pdwEnabledOptions
);
STDMETHOD_(HRESULT, SetInterfaceSafetyOptions) (
REFIID riid,
DWORD dwOptionSetMask,
DWORD dwEnabledOptions
);
END_INTERFACE_PART(ObjSafe);
xxxCtrl.cpp中新增:
<pre class="cpp" name="code">BEGIN_INTERFACE_MAP( CxxxCtrl, COleControl )
INTERFACE_PART( CxxxCtrl, IID_IObjectSafety, ObjSafe )
END_INTERFACE_MAP()
ULONG FAR EXPORT CxxxCtrl::XObjSafe::AddRef()
{
METHOD_PROLOGUE( CxxxCtrl, ObjSafe );
return p