MFCActiveXocxWord文件下载.docx

上传人:b****1 文档编号:15397025 上传时间:2022-10-30 格式:DOCX 页数:22 大小:398.71KB
下载 相关 举报
MFCActiveXocxWord文件下载.docx_第1页
第1页 / 共22页
MFCActiveXocxWord文件下载.docx_第2页
第2页 / 共22页
MFCActiveXocxWord文件下载.docx_第3页
第3页 / 共22页
MFCActiveXocxWord文件下载.docx_第4页
第4页 / 共22页
MFCActiveXocxWord文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

MFCActiveXocxWord文件下载.docx

《MFCActiveXocxWord文件下载.docx》由会员分享,可在线阅读,更多相关《MFCActiveXocxWord文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

MFCActiveXocxWord文件下载.docx

时间戳服务非常重要,添加时间戳后,即使您的代码签名证书已经过期,但由于您的代码是在证书有效期内签名的,则时间戳服务保证了此代码仍然可信,最终用户仍然可以放心下载,使得即使代码签名证书已经过期,您也无需重签和重新发布已经签名的代码。

3. 

选择“控件设置”选项卡,具体设置可参考上图。

其它选项卡为默认设置。

最后点击“完成”按钮保存设置。

二. 

添加控件方法

VC2005会为我们自动创建好MFCActiveX程序框架,我们只要给该ActiveX控件添加方法即可。

现在我们给控件添加一个“AddFun”方法,这个方法是将两个数相加并返回结果。

点击“视图”,打开“类视图”窗口。

展开“ActiveXDemoLib”项,选中“_DActiveXDemo”项。

点击鼠标右键,选择“添加”下的“添加方法”。

打开添加方法向导窗口。

因为我们是添加一个加法方法,所以我们设置的返回类型为LONG型,方法名设为AddFun,添加两个LONG类型参数Add1,Add2。

4. 

其它为默认设置,点击“完成”按钮完成添加方法。

接下来我们打开“解决方案资源管理器”打开“ActiveXDemoCtrl.cpp”文件。

5. 

打开代码视图,我们会发现VC2005已经为我们添加了一个“AddFun”方法,我们在方法内添加“returnAdd1+Add2;

”语句。

三、MFCActivex安全问题:

 1、在默认环境下,编译的MFCActivex控件,只能在本地代码中运行,即在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文件中实现以下方法

代码

#include 

"

stdafx.h"

ActivexDemo.h"

<

comcat.h>

objsafe.h>

#ifdef 

_DEBUG

#define 

new 

DEBUG_NEW

#endif

CActivexDemoApp 

theApp;

const 

GUID 

CDECL 

BASED_CODE 

_tlid 

=

0x344B8576, 

0xAB2C, 

0x4D38, 

0xAE, 

0x7, 

0x73, 

0x74, 

0x22, 

0x89, 

0x72, 

0xEA 

};

WORD 

_wVerMajor 

1;

_wVerMinor 

0;

// 

CActivexDemoApp:

:

InitInstance 

DLL 

初始化

BOOL 

InitInstance()

{

bInit 

COleControlModule:

InitInstance();

if 

(bInit)

TODO:

在此添加您自己的模块初始化代码。

}

return 

bInit;

ExitInstance 

终止

int 

ExitInstance()

在此添加您自己的模块终止代码。

ExitInstance();

创建组件种类 

HRESULT 

CreateComponentCategory(CATID 

catid, 

WCHAR* 

catDescription) 

ICatRegister* 

pcr 

NULL 

;

hr 

S_OK 

CoCreateInstance(CLSID_StdComponentCategoriesMgr, 

NULL, 

CLSCTX_INPROC_SERVER, 

IID_ICatRegister, 

(void**)&

pcr);

(FAILED(hr)) 

hr;

Make 

sure 

the 

HKCR\Component 

Categories\{..catid...} 

key 

is 

registered. 

CATEGORYINFO 

catinfo;

catinfo.catid 

catid;

catinfo.lcid 

0x0409 

english 

provided 

description 

not 

too 

long. 

Only 

copy 

first 

127 

characters 

it 

is. 

len 

wcslen(catDescription);

(len>

127) 

127;

wcsncpy(catinfo.szDescription, 

catDescription, 

len);

null 

terminated. 

catinfo.szDescription[len] 

'

\0'

pcr->

RegisterCategories(1, 

&

catinfo);

Release();

注册组件种类 

RegisterCLSIDInCategory(REFCLSID 

clsid, 

CATID 

catid)

Register 

your 

component 

categories 

information. 

(SUCCEEDED(hr)) 

this 

category 

as 

being 

implemented"

by 

class. 

rgcatid[1];

rgcatid[0] 

RegisterClassImplCategories(clsid, 

1, 

rgcatid);

(pcr 

!

NULL) 

卸载组件种类 

UnRegisterCLSIDInCategory(REFCLSID 

Unregister 

rgcatid[1] 

UnRegisterClassImplCategories(clsid, 

STDAPI 

DllRegisterServer(void) 

AFX_MANAGE_STATE(_afxModuleAddrThis);

(!

AfxOleRegisterTypeLib(AfxGetInstanceHandle(), 

_tlid)) 

ResultFromScode(SELFREG_E_TYPELIB);

COleObjectFactoryEx:

UpdateRegistryAll(TRUE)) 

ResultFromScode(SE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1