用ATL开发网页控件时,IE总会出现“该控件不是安全的”之类的提示,去掉这个提示的方法就是使用 IObjectSafety 将其标记为可安全初始化的控件。

实现方法如下:

首先在需要将 IObjectSafetyImpl 添加到该控件的派生类中,然后在映射列表中添加 IObjectSafety,具体添加的代码如下:

class CHutaow : 
    // 添加到控件的派生类列表中
    public IObjectSafetyImpl<CHutaow, INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA>
    ...
    {
        public:

        BEGIN_COM_MAP(CHutaow)

        COM_INTERFACE_ENTRY(IObjectSafety) //创建IObjectSafety的映射

        ...

        END_COM_MAP()
        ...
    }

PS: 如果出现"'IObjectSafetyImpl' : base class undefined"的错误,则需要添加"atlctl.h"头文件。


Comments