⾃⼰编写⼀个简单的ActiveX控件——详尽教程
最近开始学ActiveX控件编程,上⼿不太容易,上⽹想相关教程也没合适的,最后还是在师哥的指导下完成了第⼀个简单控件的开发,现在把开发过程贴出来与⼤家分享⼀下~
(环境说明——平台:vs2005;语⾔:VC++;基于对话框)
①新建⼯程:
⾸先以管理员⾝份运⾏vs2005,⽂件->新建->项⽬,选择Visual C++下MFC,模板选MFC ActiveX控件,⾃定义⼯程名(我的为MyActiveX),确定后基本采⽤默认设置,直接”下⼀步”,不过”控件设置”中”创建的控件基于”改选为STATIC。
②介绍⼀下默认添加的三个基本类:
CMyActiveXApp:
提供了控件类的初始化(InitInstance)和销毁代码(ExitInstance)。
CMyActiveXCtrl:
⽤来实现控件建好后有什么功能。
CMyActiveXPropPage:
⽤来建⽴属性页,当控件建好后,可让⽤户通过“可视化”的属性页⽤⿏标来选择控件的属性。
③新建Dialog视图:
1)选中资源视图,右键单击Dialog,选择”插⼊Dialog”。(有些vs2005的资源视图在整个⼯程界⾯的右边侧)
2)默认⽣成⼀个包含两个按钮的对话框,对话框ID(默认为IDD_DIALOG1)可⾃⾏更改(不与其它的重复即可,我的改为IDD_MYDIALOG)
3)重新设计对话框,并增加⼀个”edit control”(⽂本框)控件。所有标准控件都在右侧的”⼯具箱”中(有的vs2005的⼯具箱在左侧),选中后再在对话框中相应位置单击⼀下即可,可直接拖动和缩放控件。这些控件的ID都可⾃⾏修改。
4)注意:关于对话框,⼀定要将其Visible属性改为True(也就是ID为IDD_MYDIALOG的这个最外层对话框对应的Visible属性,其默认为False),否则,即使其它⼀切都对,最后对话框的内容还是不显⽰!!
5)另外,对话框的Style属性改为Child(默认为Popup),这样运⾏的控件就会嵌在⽹页窗⼝内,⽽不是单独弹出⼀个对话框。当然,这⾥要根据你的实际需求选择。
④为Dialog创建对应的类:
1)右键单击对话框视图(不要点到某个具体控件),选择”添加类”
2)⾃定义类名,我的叫CMyDialog,注意其对话框ID与IDD_MYDIALOG对应,单击”完成”
3)vs2005会⾃动为你添加基本的代码
⑤为类添加成员变量
(⼀)为对话框类创建实例变量
1)在基本类CMyActiveXCtrl中为刚刚新建的对话框类创建实例变量:在类视图中右键单击CMyActiveXCtrl,选择添加->添加变量
2)变量类型改为CMyDialog(需⼿动输⼊,就是刚刚新建的对话框类的类名),变量名⾃定义,我的为m_MyDialog,注释就⾃⼰随意添加啦~
3)完成后就可发现MyActiveXCtrl.h中最后⾯成功添加上了对话框对象。
P.S.⼯程记得随时保存!
(⼆)为对话框中的控件创建实例变量
1)以”确定”按钮为例,在该按钮处单击右键,选择”添加变量”
2)⾃定义变量名,我的叫m_OKButton。
注意⼀下”控件变量”是否勾选,”控件ID”是否选为IDOK,若前⾯是在”确定”按钮控件上右键添加变量的话,这两项应该都默认是对的。
确认后点”完成”即可为该按钮在对话框CMyDialog类中添加相应的成员变量。
3)仿照上述⼏步,为”取消”按钮和⽂本编辑框也添加相应的成员变量,分别取名为m_CancelButton和m_Edit,对应控件ID为IDCANCEL和IDC_EDIT1。完成后MyDialog.h的最后⾯就会添加上这⼏个变量。
1)为CMyActiveXCtrl类处理WM_CREATE事件,以初始化对话框对象:
左侧选中CMyActiveXCtrl,右侧属性栏选择”消息”那个⼩图标,到WM_CREATE,点击下拉按钮,选择”<;添加>OnCreate”。
2)在MyActiveXCtrl.cpp中现在会多出OnCreate函数(这不是我们⾃定义的函数,实际是重写的⽗类的函数),在其中添加⼀段代码:m_MyDialog.Create(IDD_MYDIALOG,this); //初始化对话框
3)在MyActiveXCtrl.cpp中的OnDraw函数中添加绘制对话框的代码:
m_MyDialog.MoveWindow(rcBounds,true);
并注释掉后⾯的”DoSuperclassPaint(pdc, rcBounds);”
⑦为确定按钮添加点击响应事件vs编程软件
1)选中”确定”按钮,在右侧的属性栏点击控件事件⼩图标(⼩闪电),点击BN_CLICKED,再点击右侧对应的下拉按钮选择添加OnBnClickedOk函数(在CMyDialog类中)。
2)在CMyDialog.cpp中为OnBnClickedOk函数添加相应代码:
int nLength=m_Edit.SendMessage(WM_GETTEXTLENGTH);
m_Edit.SetSel(nLength, nLength);
m_Edit.ReplaceSel(_T("Hello World!——企鹅Sheldon/r/n"));
使得每点击⼀次确定按钮,⽂本编辑框添加⼀⾏⽂本:“Hello World!——企鹅Sheldon”。
注释掉”OnOK();”,这样点击确定按钮就不会直接关闭对话框了。
⑧编译调试程序,⽣成.ocx⽂件
若以上步骤都成功完成,那么恭喜你,⼀个简单的ActiveX控件就已经初步编写完成啦!下⾯进⾏编译调试。
1)调试前,设置编译模式为Release,也就是将⼯具栏中执⾏⼩图标旁的Debug改选为Release。
2)在最上⼀⾏的⼯具栏中选择 调试->启动调试
3)成功后会在⼯程根⽬录的release⽂件夹下⽣成相应⽂件,其中的即为我们所需的控件⽂件,不过它不能直接独⽴运⾏,需要借助浏览器,并且需要先在系统注册。
注:调试过程中可能提⽰”⽆法到””的调试信息…要继续调试吗?”,选择是即可。
⑨注册控件
1)⽤管理员⾝份运⾏”Windows命令处理程序”(命令提⽰符),转到⽂件所在⽬录下,为求简便,我将其移到了C盘的MyActiveX⽂件夹下。
相关命令:
1.cd /MyActiveX :转到C盘下的MyActiveX⽂件夹下。
2.dir :查看当前⽬录下⽂件信息
< :装载控件
注:ocx控件使⽤前⼀定要先卸载旧的。
这⾥是第⼀次注册该控件,转到相应⽬录下后直接输⼊即可。成功后会有提⽰框,直接点确定。
⑩注册成功后插⼊相应⽹页中
编写测试⽹页,我推荐使⽤微软的,不⽤⾃⼰写代码。
1)运⾏Microsoft ActiveX Control Pad软件,在代码<BODY>下⽅空⽩处单击右键,选择”Insert ActiveX Control”
2)选中我们新注册的MyActiveX Control控件,单击OK
3)这时会弹出两个框,⼀个是我们的控件视图,⼀个是属性。为控件视图调整适当的窗体⼤⼩,然后关闭。
4)软件会⾃动帮你在<BODY>和</BODY>之间添加上相应代码,点击⼯具栏上的保存按钮,将⽹页保存到所需位置。我就直接保存到桌⾯上。
5)到此,测试⽹页也编辑完成,⽤IE打开测试⽹页,允许阻⽌的内容,看看,控件是不是成功显⽰啦~
好了,⼀个简单的ActiveX控件就已全部完成,这是⼀个最基本的例⼦,希望对初学ActiveX控件的同学有所帮助!
P.S.随便说说Debug和Release的区别吧:
两者都是⽤于编译,不过两者所依赖的库不同,⽤处也有区别,具体说来:
Debug我们⼀般叫调试,编译的结果会包含调试信息,它会有相应的宏,⽽且不做任何优化,所以编译出来的.ocx或.exe⽂件会⼤⼀点。⼀般开发者在开发过程中会使⽤Debug调试。
Release则通常称为发布版本,它不保存调试信息,⽽且会进⾏优化,所以编译出来的.ocx或.exe⽂件会⼩⼀点,以期达到代码最⼩和速度最优。⼀般是最终完成后发布的版本,为⽤户使⽤,⼀般客户不允许在发布版本上进⾏调试。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论