1、 时间戳服务非常重要,添加时间戳后,即使您的代码签名证书已经过期,但由于您的代码是在证书有效期内签名的,则时间戳服务保证了此代码仍然可信,最终用户仍然可以放心下载,使得即使代码签名证书已经过期,您也无需重签和重新发布已经签名的代码。3. 选择“控件设置”选项卡,具体设置可参考上图。其它选项卡为默认设置。最后点击“完成”按钮保存设置。二 添加控件方法VC2005会为我们自动创建好MFC ActiveX程序框架,我们只要给该ActiveX控件添加方法即可。现在我们给控件添加一个“AddFun”方法,这个方法是将两个数相加并返回结果。 点击“视图”,打开“类视图”窗口。 展开“ActiveXDemo
2、Lib”项,选中“_DActiveXDemo”项。点击鼠标右键,选择“添加”下的“添加方法”。 打开添加方法向导窗口。因为我们是添加一个加法方法,所以我们设置的返回类型为LONG型,方法名设为AddFun,添加两个LONG类型参数Add1,Add2。4. 其它为默认设置,点击“完成”按钮完成添加方法。接下来我们打开“解决方案资源管理器”打开“ActiveXDemoCtrl.cpp”文件。5. 打开代码视图,我们会发现VC2005已经为我们添加了一个“AddFun”方法,我们在方法内添加“return Add1 + Add2;”语句。三、MFC Activex 安全问题:1、在默认环境下,编译的
3、MFC Activex控件,只能在本地代码中运行,即在http:/localhost/xxx/xxx.htm中执行,而在http:/127.0.0.1/xxx/xxx.htm中提示无相关属性,需要设置其初始化和脚本运行的安全性ActiveX在远程IE页面上执行,需要实现安全接口。在ATL写的ActiveX中,用IObjectSafety。 在MFC写的ActiveX中,直接修改注册表。mfc实现的ocx,要在app实现文件中包括两个文件:在ActivexDemo.cpp 文件中实现以下方法代码 #includestdafx.hActivexDemo.hobjsafe.h#ifdef_DEBUG
4、#definenewDEBUG_NEW#endifCActivexDemoApptheApp;constGUIDCDECLBASED_CODE_tlid=0x344B8576,0xAB2C,0x4D38,0xAE,0x7,0x73,0x74,0x22,0x89,0x72,0xEA;WORD_wVerMajor=1;_wVerMinor0;/CActivexDemoApp:InitInstance-DLL初始化BOOLInitInstance()bInitCOleControlModule:InitInstance();if(bInit)TODO:在此添加您自己的模块初始化代码。returnbI
5、nit;ExitInstance终止intExitInstance()在此添加您自己的模块终止代码。ExitInstance();创建组件种类HRESULTCreateComponentCategory(CATIDcatid,WCHAR*catDescription)ICatRegister*pcrNULL;hrS_OKCoCreateInstance(CLSID_StdComponentCategoriesMgr,NULL,CLSCTX_INPROC_SERVER,IID_ICatRegister,(void*)&pcr);(FAILED(hr)hr;MakesuretheHKCRCompo
6、nentCategories.catid.keyisregistered.CATEGORYINFOcatinfo;catinfo.catidcatid;catinfo.lcid0x0409englishprovideddescriptionnottoolong.Onlycopyfirst127charactersitis.lenwcslen(catDescription);(len127)127;wcsncpy(catinfo.szDescription,catDescription,len);nullterminated.catinfo.szDescriptionlen0pcr-Regist
7、erCategories(1,&catinfo);Release();注册组件种类RegisterCLSIDInCategory(REFCLSIDclsid,CATIDcatid)Registeryourcomponentcategoriesinformation.(SUCCEEDED(hr)thiscategoryasbeingimplementedbyclass.rgcatid1;rgcatid0RegisterClassImplCategories(clsid,1,rgcatid);(pcr!NULL)卸载组件种类UnRegisterCLSIDInCategory(REFCLSIDUnregisterrgcatid1UnRegisterClassImplCategories(clsid,STDAPIDllRegisterServer(void)AFX_MANAGE_STATE(_afxModuleAddrThis);(!AfxOleRegisterTypeLib(AfxGetInstanceHandle(),_tlid)ResultFromScode(SELFREG_E_TYPELIB);COleObjectFactoryEx:UpdateRegistryAll(TRUE)ResultFromScode(SE
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1