VisualC++2010MFCActiveX控件小结

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、ActiveX控件ActiveX控件是基于组件对象模型COM--ComponentsObjectModem的可重用软件组件,旨在用于普通的ActiveX控件容器和Internet上的网页,这里介绍用MFC创建ActiveX控件。一个典型的ActiveX控件,具有方法、属性、事件这三种特性。二、ActiveX控件的测试与注册1、使用ActiveX控件测试容器对控件进行测试对于VC6.0,安装Common\Tools目录下的TSTCON32.EXE即可使用。而vs2010中的TSTCON(ActiveXControlTestContainer)工具非自动安装,而是作为一个例程提供。所以应找到该例程,并编译:如vs2010安装在默认路径则1,进入:C:\ProgramFiles\MicrosoftVisualStudio10.0\Samples\1033,可找到VC2010Samples.zip文件,2,将其解决到同一个文件夹,解压后将出现一个C++子文件夹。3,TstCon例程在:C:\ProgramFiles\MicrosoftVisualStudio10.0\Samples\1033\C++\MFC\ole\TstCon,双击其中的.sln文件启动工程,直接编译,4,编译后在Debug子文件夹中将出现一个TstCon.exe文件,将其复制到:C:\ProgramFiles\MicrosoftVisualStudio10.0\Common7\Tools文件夹。5,在vs2010中的Tools菜单点击“ExternalTools...”,出现如下对话框,点击“Add”添加一项工具。6,新工具项的Title为:ActiveXControlTestContainer,Command为:C:\ProgramFiles\MicrosoftVisualStudio10.0\Common7\Tools\TstCon.exe。7,确认退出对话框,Tools菜单将出现“ActiveXControlTestContainer”菜单项。VisualC++2010MFCActiveX控件小结-wangdongpippo-Captain栋蝈打开控件测试容器初始界面如下图VisualC++2010MFCActiveX控件小结-wangdongpippo-Captain栋蝈Edit→InsertNewControl→选择要测试的控件→OK2、ActiveX控件的注册与删除所有的ActiveX控件必须在注册之后才能使用,实际上在VS2010开发环境中生成控件程序时,就已经通过regsvr32程序注册了该控件;如果要删除ActiveX控件的注册信息,利用regsvr32程序的/u选项来完成。通常可以选择“开始”→“运行”命令,然后输入“regsvr32/u”,再在其后输入要删除的ActiveX控件的完整路径。Tips:在“运行”中先输入regsvr32/u,然后拖动要删除的控件到“regsvr32/u”之后,即可获取其完整路径。将xxx.ocx文件拷贝至Windows\system下,然后regsvrxxx.ocx即注册;regsvr32/uxxx.ocx即删除。三、ActiveX控件开发完整过程经典Clock控件案例~~1、创建工程创建MFCActiveXControl类项目,命名为Clock,MFCActiveXControlWizard全选默认,Finish。2、时钟控件的实现获取当前系统时间,CClockCtrl类的OnDraw函数中CTimetime=CTime::GetCurrentTime();CStringstr=time.Format(%H:%M:%S);pdc-TextOut(0,0,str);动态显示时间,CClockCtrl类添加WM_CREATE和WM_TIMER消息及处理函数设置定时器SetTimer(1,1000.NULL);定时器相应函数InvalidateControl();//其实就是调用OnDraw函数编译并运行ActiveX控件,然后打开ActiveX控件容器中插入该控件,可以看到动态显示的时间3、属性3.1标准属性以背景色和前景色为例,类视图中展开Lib结尾的选项,右键“_DClock”→“添加”→“属性”,然后添加标准属性,及选中“Stock”,在PropertyName中选则BackColor,其余选中默认,单击完成。同理添加前景色ForeColor。为属性对话框添加“颜色”选项卡,修改类CClockCtrl.cpp中的属性页映射宏PROPPAGEID(CLSID_CColorPropPage);切记计数参数要增加1://属性页//TODO:按需要添加更多属性页。请记住增加计数!BEGIN_PROPPAGEIDS(CClockCtrl,2)PROPPAGEID(CTimePropPage::guid)PROPPAGEID(CLSID_CColorPropPage);END_PROPPAGEIDS(CClockCtrl)然后在修改OnDraw函数使控件颜色根据颜色选项卡的选则而变化:CBrushbrush(TranslateColor(GetBackColor()));pdc-FillRect(rcBounds,&brush);pdc-SetBkMode(TRANSPARENT);pdc-SetTextColor(TranslateColor(GetForeColor()));3.2自定义属性添加一个自定义属性:时间间隔(UpdateInterval),用于设置更新时间的间隔。与标准属性添加相同,在添加属性向导中,在PropertyName中输入UpdateInterval,类型设置为SHORT。可以看到向导自动添加了通知函数OnUpdateIntervalChange(),单击Finish完成添加。voidCClockCtrl::OnUpdateIntervalChanged(void){AFX_MANAGE_STATE(AfxGetStaticModuleState());//TODO:在此添加属性处理程序代码if(m_UpdateInterval1000||m_UpdateInterval6000){//解决输入值不合要求的问题m_UpdateInterval=1000;}else{//解决输入值不是整数的问题m_UpdateInterval=m_UpdateInterval/1000*1000;}KillTimer(1);SetTimer(1,m_UpdateInterval,NULL);SetModifiedFlag();}关联某控件变量,需要手动添加:DDP_Text(pDX,IDC_EDIT1,m_updateInterval,_T(Interval));DDX_Text(pDX,IDC_EDIT1,m_updateInterval);DDP_PostProcessing(pDX);DDP、DDX、PostProcessing,顺序不可以调整为测试自定义属性,在Edit→InsertNewControl→选择要测试的控件后,选择Control→InvokeMethods,如果想要获取,某个属性值,则选择PropGet;如果设置,则选PropPut。这里选择后者,然后输入2000,单击SetValue,在单击【Invoke】按钮,发现控件时间每个2S更新一次。4、方法与添加属性一样,_DClock右键......选择“方法”,这里添加一个简单的“Hello”代码:voidCClockCtrl::Hello(void){AFX_MANAGE_STATE(AfxGetStaticModuleState());//TODO:在此添加调度处理程序代码MessageBox(_T(Helloworld));}测试时Control→InvokeMethods,选择“Hello”5、事件5.1添加标准事件右键CClockCtrl类(类视图CxxxCtrl上点击右键才能添加事件,而在_DxxxEvents接口上点击右键则没有添加事件),添加“事件”,显示添加事件向导对话框,“EventName”下拉列表框中选择”Click“,单击Finish。5.2添加自定义事件添加一个NewMinute事件,实现新的一分钟时有提示EventName中输入NewMinute,然后Finish。在InDraw函数中获取系统时间代码后添加if(time.GetSecond()==0){NewMinute();//判断是否过了一分钟,是则触发NewMinute事件}6、调用ActiveX控件新建一个名为ClockTest的对话框,在对话框上右键,选择”InsertActiveXControl“,找到Clock控件添加即可。或者是,”工具“→”选择工具箱选项“→”COMComponents“,选择要插入的控件,单击OK。

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功