如题

解决方案 »

  1.   

    需要实现IObjectSafety接口,直接从IObjectSafetyImpl继承吧。
      

  2.   

    实现SAFE FOR SCRIPTING AND SAFE FOR INITIALIZING类别, 
    并且实现IObjectSafe接口
      

  3.   

    我用vc6带的atl开发activex 还请详细说下
      

  4.   

    class ATL_NO_VTABLE CYourClass   :   //从IObjectSafetyImpl派生   
    public IObjectSafetyImpl<CYourClass,INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA>   
    {   
    BEGIN_COM_MAP(CChatObj)   
    COM_INTERFACE_ENTRY(IObjectSafety) //添加映射   
    END_COM_MAP()   
    }  
      

  5.   

    确切地说,你需要添加的是:
    public IObjectSafetyImpl<CYourClass,INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA>  COM_INTERFACE_ENTRY(IObjectSafety) //添加映射
      

  6.   

    class CMeetingMng_DKCtrl : public COleControl
    {
    DECLARE_DYNCREATE(CMeetingMng_DKCtrl)
    public:
    // Constructor
    public:
    CMeetingMng_DKCtrl();// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CMeetingMng_DKCtrl)
    public:
    virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
    ..这个是我activex的实现类 不是您那个样子的呀。
      

  7.   

    IObjectSafetyImpl加到你的继承列表中,然后把IObjectSafety加到COM_MAP中。
      

  8.   

    加入到继承列表中后error C2504: 'IObjectSafetyImpl' : base class undefined
    添加上#include <atlctl.h> 后进入到#error atlwin.h requires atlbase.h to be included first
    这是为什么?
      

  9.   

    把atlbase放在atlctl前包含 那错误就更多了。
      

  10.   

    lz你这是使用MFC开发Acticvex,而不是ATL
      

  11.   

    对不起大家我的错!!
    我在网上找了一个例子
    http://www.vcer.net/1183942830468.html
    但是copy后还是提示不安全呢?
      

  12.   

    用mfc的直接修改注册表没成功。以下和ls几位大神说的差不错望对后来者有帮助。http://blog.csdn.net/zhouxing_24/archive/2008/12/30/3651420.aspx