VS2010下通过时钟控件学习ActiveX控件编程+js关联ActiveX控件事件方法

本文介绍了如何在VS2010下使用MFC开发ActiveX时钟控件,详细讲解了创建过程、属性设置、事件处理,并展示了在测试程序和网页中调用控件的示例,特别是如何用JavaScript关联ActiveX控件的事件方法。
摘要由CSDN通过智能技术生成

一、ActiveX控件简介

1、什么是ActiveX控件

-------百度吧。ActiveX控件基于COM,但是即使不懂COM编程技术,仍然可以编写ActiveX控件。

一个典型的ActiveX控件具有:方法、属性、事件

2、ActiveX控件有什么用途?

在实际编程工作中,可以将一些常用的功能封装在一个ActiveX控件中,提供给开发人员使用。

ActiveX控件不能独立运行,需嵌入容器程序中才能运行。典型的应用比如windows窗口程序、Web应用程序。

ActiveX控件通常后缀格式为ocx或者dll。控件使用之前需要注册,方法如下:

//注册
regsvr32 xxx.ocx

//取消注册
regsvr32 /u xxx.ocx

二、利用vs2010编写时钟控件

创建工程——》添加属性——》添加方法——》添加事件——》测试

1、创建工程

a、新建MFC ActiveX应用程序,使用默认设置即可。新建完成通过类视图可以看到,自动生成的3个类如下图:


        CClockOCXAPP类派生于COleControlModule类,而COleControlModule类又派生于CWinApp,所以把该类看作应用程序类,它的实例表示了控件本身。

CClockOCXCtrl类派生于COleControl类,而COleControl类派生于CWnd类,因此,该类是一个窗口类,对控件的操作都在该类中实现。

CClockPropPage类派生于COleProperty类,而COleProperty类派生于CDialog类,所以该类是用来显示口案件属性页的,对应一个对话框资源与之关联。

另外,_DClockOCX和_DClockOCXEvents是控件与外部程序通信的接口,就是说容器类程序要调用该控件就是通过这个接口。CClockOCXCtrl类继承_DClockOCX接口。

b、开始进入正题

程序结构分析完之后,开始实现功能。

要实现时钟显示功能,分两步:第一步,处理控件的WM_CREATE消息,即在OnCreate()函数中启动计时器。第二步,处理WM_TIMER消息,即计时增加1s(OnCreate函数中设置),重绘窗口,显示时间,重绘窗口时调用OnDraw()方法。

。在CClockOCXCtrl类中修改OnDraw方法,默认是画了一个椭圆,将格式化的时间字符串绘制到窗口。如下:

void CClockOCXCtrl::OnDraw(
			CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
	if (!pdc)
		return;

	// TODO: 用您自己的绘图代码替换下面的代码。
// 	pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
// 	pdc->Ellipse(rcBounds);

	CTime time = CTime::GetCurrentTime();//获得系统时间
	CString str = time.Format("%H:%M:%S");
	pdc->TextOut(0,0,str);
}

。打开类向导(在类上右击,选择类向导),在CClockOCXCtrl类添加WM_CREATE和WM_TIMER消息处理函数

int CClockOCXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (COleControl::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO:  在此添加您专用的创建代码
	SetTimer(1,1000,NULL);//设置定时器,1s显示一次
	return 0;
}
void CClockOCXCtrl::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	/*AmbientUserMode()返回0,处于设计模式,否则处于运行模式*/
	if(AmbientUserMode())//在设计模式下,让时钟静止,即不重绘窗口
	{
		Invalidate();//使窗口无效,从而使窗口重绘
	}
	COleControl::OnTimer(nIDEvent);
}

2、添加属性

.基本功能实现了,下面增加一些人性化的实现,比如设置控件的属性,设置显示间隔,比如2s/3s显示一次等

。增加设置时钟的背景色和前景色(标准属性)

转到类视图中,选中_DClockOCX,右键,添加属性&

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值