资源描述:
《使用C++MFC开发ActiveX控件.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、使用C++MFC开发ActiveX控件开发环境:VS2008运行环境:VS0101、建立工程操作步骤如下(本示例工程名:HbisMfcFVOCX):点击【完成】按钮后,MFC工程建立,工程中自动添加很多文件和代码。2、解除IE安全提示在HbisMfcFVOCXCtrl.h文件中#pragmaonce的下一行添加如下代码//-------添加---------------//取消ie的安全提示#include"objsafe.h"//---------添加完----------------------------如图:在HbisMfcFVOCXCtrl.
2、h文件中的声明部分声明(和CHbisMfcFVOCXCtrl()构造函数同在一个地方)//----------增加取消ie的安全提示-----=----DECLARE_INTERFACE_MAP()BEGIN_INTERFACE_PART(ObjSafe,IObjectSafety)STDMETHOD_(HRESULT,GetInterfaceSafetyOptions)(/*[in]*/REFIIDriid,/*[out]*/DWORD__RPC_FAR*pdwSupportedOptions,/*[out]*/DWORD__RPC_FAR*pdwEna
3、bledOptions);STDMETHOD_(HRESULT,SetInterfaceSafetyOptions)(/*[in]*/REFIIDriid,/*[in]*/DWORDdwOptionSetMask,/*[in]*/DWORDdwEnabledOptions);END_INTERFACE_PART(ObjSafe);//---------添加完----------------------------如图:在HbisMfcFVOCXCtrl.cpp文件中添加如下代码(注意将CHbisMfcFVOCXCtrl文字更换成实际内容)//------
4、--添加-------------------//取消ie的安全提示//InterfacemapforIObjectSafetyBEGIN_INTERFACE_MAP(CHbisMfcFVOCXCtrl,COleControl)INTERFACE_PART(CHbisMfcFVOCXCtrl,IID_IObjectSafety,ObjSafe)END_INTERFACE_MAP()ULONGFAREXPORTCHbisMfcFVOCXCtrl::XObjSafe::AddRef(){METHOD_PROLOGUE(CHbisMfcFVOCXCtrl,Obj
5、Safe)returnpThis->ExternalAddRef();}ULONGFAREXPORTCHbisMfcFVOCXCtrl::XObjSafe::Release(){METHOD_PROLOGUE(CHbisMfcFVOCXCtrl,ObjSafe)returnpThis->ExternalRelease();}HRESULTFAREXPORTCHbisMfcFVOCXCtrl::XObjSafe::QueryInterface(REFIIDiid,voidFAR*FAR*ppvObj){METHOD_PROLOGUE(CHbisMfcFVOC
6、XCtrl,ObjSafe)return(HRESULT)pThis->ExternalQueryInterface(&iid,ppvObj);}constDWORDdwSupportedBits=INTERFACESAFE_FOR_UNTRUSTED_CALLER
7、INTERFACESAFE_FOR_UNTRUSTED_DATA;constDWORDdwNotSupportedBits=~dwSupportedBits;HRESULTSTDMETHODCALLTYPECHbisMfcFVOCXCtrl::XObjSafe::GetInterfaceSaf
8、etyOptions(/*[in]*/REFIIDriid,/*[out]*/DWORD__RPC_FAR*pdwSupportedOptions,/*[out]*/DWORD__RPC_FAR*pdwEnabledOptions){METHOD_PROLOGUE(CHbisMfcFVOCXCtrl,ObjSafe)HRESULTretval=ResultFromScode(S_OK);//doesinterfaceexist?IUnknownFAR*punkInterface;retval=pThis->ExternalQueryInterface(&r
9、iid,(void**)&punkInterface);if(re