WEB开发网
开发学院软件开发VC 基于VC++中ATL创建ActiveX控件的探讨 阅读

基于VC++中ATL创建ActiveX控件的探讨

 2009-06-16 20:07:13 来源:WEB开发网   
核心提示: 图1 图23)为ActiveX控件添加自定义属性现在来添加Circle控件的一个基本属性——Radius,在Workspace Windows中Class View状态下,基于VC++中ATL创建ActiveX控件的探讨(3),右击 ICircleCtl接口,选择A

基于VC++中ATL创建ActiveX控件的探讨

基于VC++中ATL创建ActiveX控件的探讨

图1 图2

3)为ActiveX控件添加自定义属性

现在来添加Circle控件的一个基本属性——Radius。

在Workspace Windows中Class View状态下,右击 ICircleCtl接口,选择Add Property,属性类型为short,名为Radius,参数为空。系统会自动生成get_Radius和put_Radius两个成员函数。在CCircleCtl中添加m_radius变量,用来存储半径。在CCircleCtl的构造函数中将其初始化为50,并在get_Radius函数中添加*pVal=m_radius; 在put_Radius函数中添加m_radius=newVal; FireViewChange();用来及时更新视图。对于Radius的属性,我们通过修改控件的绘制代码来使它起作用。

4) 修改ActiveX控件的绘制代码实现属性交换

首先,在CCircleCtl的构造函数中对绘制圆的填充色进行初始化,将它的初始值设为红色,即m_clrFillColor=RGB(255,0, 0)。

接下来,我们需要几个全局变量来保存控件区域的信息,在CircleCtl.h中添加如下变量:

  static POINT CenterPt;
  static long RectHt = 0;
  static long RectWd = 0;

然后修改OnDraw函数,在该绘制函数中,使用 Windows API中标准的HDC、HPEN、HBRUSH以及SelectObject、Ellipse等结构和函数来实现绘制的。例如:

  // 创建画笔和画刷并选中颜色画圆

  hPen = (HPEN)GetStockObject(BLACK_PEN);

  hOldPen = (HPEN)SelectObject(hdc, hPen);

  hBrush = (HBRUSH)GetStockObject(WHITE_BRUSH);

  hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);

  hBrush = CreateSolidBrush(colFore);

  SelectObject(hdc, hBrush);

  Ellipse (hdc, (CenterPt.x - m_radius), (CenterPt.y - m_radius), (CenterPt.x +m_radius),(CenterPt.y+ m_radius));

上一页  1 2 3 4  下一页

Tags:基于 VC ATL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接