简介
ActiveX控件是使用COM(组件对象模型)技术创建的一个用户界面组件。ActiveX控件具有体积小、速度快和功能强大的特点,并且可以简化集成和重用软件组件的工作。本文讨论了如何为Pocket PC上的Pocket Internet Explorer创建ActiveX控件,同时还描述了如何在基于Pocket Internet Explorer的应用程序中使用ActiveX控件。
在由Windows驱动的设备上开发和使用ActiveX控件时需要以下软件:
1. Microsoft eMbedded Visual C++ 3.0 2. Microsoft Windows CE Platform Software Development Kit(SDK)for Pocket PC 3. Microsoft Windows CE Services 2.2或更高的版本
Visual C++开发系统提供了三种为基于Windows CE设备建立ActiveX控件的方法:
自动化程度最低的方法就是不使用编程框架编写控件,而使用标准Windows CE OLE应用编程接口(API)。
用Active Template Library(ATL)for Windows CE,我们强烈建立这一方法,因为它可以得到体积更小、速度更快的控件。
使用Microsoft Foundation Classes(MFC)for Windows CE也是可行的,但不在本文的讨论范围之内。 在本文中,我们将重点讨论如何使用ATL for Windows CE为Pocket Internet Explorer开发小型、轻量的控件。
利用ATL实现ActiveX控件
使用eMbedded Visual C++创建基于ATL的ActiveX控件非常简单。只需运行eMbedded Visual C++,并使用ATL COM AppWizard创建一个新工程。ATL COM AppWizard将为您的ActiveX控件创建一个好的起点。
然后,您需要向该工程内添加COM对象。只需从菜单中选择Insert/New ATL Object(插入/新建ATL对象),然后选择Simple Object(简单对象),最后为您的ActiveX对象命名。
这就行了!您刚刚已经创建了一个Pocket Internet Explorer ActiveX控件!尽管它并不执行任何操作,但这一控件的确可以在Pocket Internet Explorer上加载。
让我们研究一下如何向该ActiveX控件添加一些功能。
添加用户界面
使用ATL向这一ActiveX控件“骨架”添加UI非常简单,只需添加两个已由ATL定义的实现方式,然后绘出您的对象即可。
向ActiveX对象添加以下实现方式将把ActiveX对象定义为控件,同时定义了一个界面,该界面允许对象直接显示自身,而无需向调用程序(IViewObject)传输数据对象。此外,IViewObject接口可以创建和管理与通知接受器的连接,让调用程序获取控件改变的通知。
CComControl<CAXSampleCtl> IViewObjectExImpl<CAXSampleCtl> | 在向ActiveX控件添加了这两个实现方式后,您可以覆盖该对象刚刚继承的CComControl实现的OnDraw()方法。
在本例中,ActiveX控件将在分配给该控件的客户窗口区中绘制4个圆(稍后我们将看到如何创建指定宽度和高度的控件)。 HRESULT CAXSampleCtl::OnDraw
HRESULT CAXSampleCtl::OnDraw ( ATL_DRAWINFO & di ) { RECT rc = *((RECT*)di.prcBounds); HDC hdc = di.hdcDraw;
Ellipse(hdc, 0, 0, (rc.right / 2), (rc.bottom / 2)); Ellipse(hdc, (rc.right / 2), 0, rc.right, (rc.bottom / 2)); Ellipse(hdc, 0, (rc.bottom / 2), (rc.right / 2), rc.bottom); Ellipse(hdc, (rc.right / 2), (rc.bottom / 2), rc.right, rc.bottom);
return S_OK; } | OnDraw()函数负责为控件创建UI(用户界面)。
|
|