使用 VS2010 开发 ActiveX(MFC)控件
(一)创建,生成基本框架代码
打开 VS2010,“文件”->“新建”->“项目”,在打开的“新建项目”对话框中点击“Visual
C++” ->“MFC” ->“MFC ActiveX 控件”,输入名称,此处我们命名为 SC_IPNC_OCX。
在控件向导窗口中,“概述”、“应用程序设置”、“控件名称”、“控件设置”都不用动,
直接点击“完成”。
到这一步 MFC 已经完成 ActiveX 的框架了,下边就可以开始添加自己的东西了。
先把项目属性设置下,在菜单栏点击“项目”,在下拉菜单中选择“SC_IPNC_OCX 属性”,
出对属性对话框:在“配置属性”中点“常规”,在右侧将“MFC 的使用”设置为“在静态
库中使用 MFC”,
(注:
1.使用标准 Windows 库
2.在共享 DLL 中使用 MFC
3.在静态库中使用 MFC
第一种顾名思义。
第二种指的是打包时一些 MFC 的 DLL 的内容没有被包含在 EXE 文件中,所以 EXE 文件较小,但是
运行时要求系统中要有相关的 DLL 文件。
第三种是将 DLL 中的相关代码写进 EXE 文件中,文件较大,但是可以在没有相关 DLL 的机器上运行。)
然后“应用”,“确定”。
点击菜单栏中的“生成”,“重新生成 SC_IPNC_OCX”,就可以生成一个只有基本结构的
ocx 文件。
(二)设计界面及 WEB 调用
1.设计界面
在资源视图中新建一个对话框资源,去掉上边的“确定”和“取消”按钮,然后修改对
话框属性:Border改为None,Control改为Ture,ID改为IDD_MAIN_DIALOG,Style改为Child,
System Modal改为False,Visible改为True,然后在对话框中右击->“添加类”,为对话框添加
一个类“CMainDlg”,如下图:
点击“完成”。
此时该界面还不能在控件加载后显示,要进行如下设置:
在类视图中,对 CSC_IPNC_OCXCtrl 类点击右键,点击“添加”->“添加变量”,然后“完
成”,变量类型“CMainDlg”,变量名“m_MainDlg”,如下图:
在类视图中,点击 CSC_IPNC_OCXCtrl 类,在“属性”窗口中,依次点击“消息”、选
中下边的“WM_CREATE”、点击右边的“OnCreate”, 向导会在 SC_IPNC_OCXCtrl.h 和
SC_IPNC_OCXCtrl.cpp 中添加如下代码:
在OnDraw方法中代码修改如下:
在 OnCreate 方法中添加如下代码:
此时,界面已经可以在控件并加载后显示了,先在菜单栏中点击“生成”,“重新生成
SC_IPNC_OCX ”, 如 果 没 有 错 误 , 则 该 控 件 就 会 在 本 机 中 注 册 。 下 边 进 行 打 包 生 成
“SC_IPNC.CAB”,编写 html 文件在本机上对该控件进行测试。
2.CAB 打包
在vs2010工程“源文件”中打开SC_IPNC_OCX.idl,找到“CSC_IPNC_OCXCtrl 的类
信息”
新建 default.INF 文件,内容如下:(上述的 uuid 就是下面的 classid)
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
SC_IPNC_OCX.ocx=SC_IPNC_OCX.ocx
[SC_IPNC_OCX.ocx]
file-win32-x86=thiscab
RegisterServer=yes
clsid={43C17AB4-E1A1-4A97-B487-063752D93992}
DestDir=11
FileVersion=1,0,0,1
找到 C:\WINDOWS\system32\iexpress.exe,双击运行
“下一步”->选择“Create compressed files only(ActiveX installs)”
“ 下 一 步 ”,“ Add ”, 选 择 文 件 “ default.INF ” 和 工 程 目 录 Debug 文 件 下 的
“SC_IPNC_OCX.ocx”
“下一步”,“Browse”,为打包文件选择路径,命名为“SC_IPNC.CAB”,选中“Store files
using Long File Name inside Package”
“下一步”,选中“Don’t save”
“下一步”, “下一步”,“完成”
成功打包生成“SC_IPNC.CAB”。
3.编写 html 文件
编写 html 文件“SC_IPNC_OCX.html”,代码如下:
"-//W3C//DTD
html
PUBLIC
XHTML
Transitional//EN"
ActiveX 测试
然后用 IE 打开该 html 文件“SC_IPNC_OCX.html”,就会出现 ActiveX 控件提示,“允
许阻止的内容”,就会显示刚才设计的界面了。