Visual C++ MFC ActiveX 控件小结[推荐]_mfccstring用法小结
Visual C++ MFC ActiveX 控件小结[推荐]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“mfccstring用法小结”。
一、ActiveX控件
ActiveX控件是基于组件对象模型COM--Components Object Modem的可重用软件组件,旨在用于普通的ActiveX控件容器和Internet上的网页,这里介绍用MFC创建ActiveX控件。一个典型的ActiveX控件,具有方法、属性、事件这三种特性。
二、ActiveX控件的测试与注册
1、使用ActiveX控件测试容器对控件进行测试
对于VC6.0,安装CommonTools目录下的TSTCON32.EXE即可使用。
而vs2010中的TSTCON(ActiveX Control Test Container)工具非自动安装,而是作为一个例程提供。所以应找到该例程,并编译: 如vs2010安装在默认路径则
1, 进入:C:Program FilesMicrosoft Visual Studio 10.0Samples1033,可找到VC2010Samples.zip文件,2, 将其解决到同一个文件夹,解压后将出现一个C++子文件夹。
3, TstCon例程在:C:Program FilesMicrosoft Visual Studio 10.0Samples1033C++MFColeTstCon,双击其中的.sln文件启动工程,直接编译,4, 编译后在Debug子文件夹中将出现一个TstCon.exe文件,将其复制到:C:Program FilesMicrosoft Visual Studio 10.0Common7Tools文件夹。
5, 在vs2010中的Tools菜单点击“External Tools...”,出现如下对话框,点击“Add”添加一项工具。6, 新工具项的“Title”为:ActiveX Control Test Container,“Command” 为:C:Program FilesMicrosoft Visual Studio 10.0Common7Tools TstCon.exe。
7, 确认退出对话框,Tools菜单将出现“ActiveX Control Test Container”菜单项。Visual C++ 2010 MFC ActiveX 控件小结Captain栋蝈 打开控件测试容器初始界面如下图
Visual C++ 2010 MFC ActiveX 控件小结Captain栋蝈 Edit→Insert New Control→选择要测试的控件→OK
2、ActiveX控件的注册与删除
所有的ActiveX控件必须在注册之后才能使用,实际上在VS2010开发环境中生成控件程序时,就已经通过regsvr32程序注册了该控件;如果要删除ActiveX控件的注册信息,利用regsvr32程序的/u选项来完成。通常可以选择“开始”→“运行”命令,然后输入“regsvr32/u”,再在其后输入要删除的ActiveX控件的完整路径。Tips:在“运行”中先输入regsvr32/u,然后拖动要删除的控件到“regsvr32/u”之后,即可获取其完整路径。
将xxx.ocx文件拷贝至Windowssystem下,然后regsvr xxx.ocx即注册;regsvr32/u xxx.ocx即删除。
三、ActiveX控件开发完整过程 经典Clock控件案例~~
1、创建工程
创建MFC ActiveX Control类项目,命名为Clock,MFC ActiveX Control Wizard全选默认,Finish。
2、时钟控件的实现
获取当前系统时间,CClockCtrl类的OnDraw函数中 CTime time=CTime::GetCurrentTime();CString str=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函数使控件颜色根据颜色选项卡的选则而变化:
CBrush brush(TranslateColor(GetBackColor()));
pdc->FillRect(rcBounds,&brush);
pdc->SetBkMode(TRANSPARENT);
pdc->SetTextColor(TranslateColor(GetForeColor()));3.2自定义属性
添加一个自定义属性:时间间隔(UpdateInterval),用于设置更新时间的间隔。
与标准属性添加相同,在添加属性向导中,在PropertyName中输入UpdateInterval,类型设置为SHORT。可以看到向导自动添加了通知函数OnUpdateIntervalChange(),单击Finish完成添加。void CClockCtrl::OnUpdateIntervalChanged(void){
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加属性处理程序代码
if(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_PostProceing(pDX);DDP、DDX、PostProceing,顺序不可以调整
为测试自定义属性,在Edit→Insert New Control→选择要测试的控件后,选择Control→Invoke Methods,如果想要获取,某个属性值,则选择PropGet;如果设置,则选PropPut。这里选择后者,然后输入2000,单击SetValue,在单击【Invoke】按钮,发现控件时间每个2S更新一次。
4、方法
与添加属性一样,_DClock右键......选择“方法”,这里添加一个简单的“Hello” 代码:
void CClockCtrl::Hello(void){
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加调度处理程序代码
MeageBox(_T(“Hello world”));} 测试时Control→Invoke Methods,选择“Hello”
5、事件
5.1添加标准事件
右键CClockCtrl类(类视图CxxxCtrl上点击右键才能添加事件,而在_DxxxEvents接口上点击右键则没有添加事件),添加“事件”,显示添加事件向导对话框,“Event Name”下拉列表框中选择”Click“,单击Finish。5.2添加自定义事件
添加一个NewMinute事件,实现新的一分钟时有提示 Event Name中输入NewMinute,然后Finish。在InDraw函数中获取系统时间代码后添加 if(time.GetSecond()==0)
{
NewMinute();//判断是否过了一分钟,是则触发NewMinute事件
}
6、调用ActiveX控件
新建一个名为ClockTest的对话框,在对话框上右键,选择”Insert ActiveX Control“,找到Clock控件添加即可。
或者是,”工具“→”选择工具箱选项“→”COM Components“,选择要插入的控件,单击OK。
由于近期要使用gridcontrol控件,整理出来,以便以后参考:1.DevExpre控件组中的GridControl控件不能使横向滚动条有效。现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常......
MFC控件关联变量总结通常在要绑定变量的编辑框控件上右键添加变量就可以。绑定变量分value和control两种,value是赋值用的,control是控制用的。 对于编辑框的赋值,共分几种方法......
From 属性:1.MaximizeBox:是否显示最小化按钮。 2.MinimizeBox:是否显示最大化按钮。3.FormBorderStyle:窗口样式,如FixedSingle:固定大小。 4.StartPosition:初始显示的位置,Center......
功---- VB6无疑是当前最先进的编程工具之一,无论是它的代码编写还是与视窗98的完美结合, 都令人们特别是程序员们赞叹不已。在这里,我将自己在编程实践中对LISTVIEW控件的一......
iOS UITextField控件总结//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有......
