创建一个ActiveX 控件

2004年12月14日  19:46:07

欢迎来到充满活力的创建控件的拓荒之地。


1.与其它可编程对象不同,控件同时具有设计时和运行时的两种行为。 即开发者在设计时把一个控件实例放入窗体时,控件中的一些代码将会执行。
2.控件中诸如位图之类的二进制信息会保存到一个同名的二进制文件中,该文件的扩展名为 .ctx 。
3.为了调试控件设计时的行为,当放置有控件的测试窗体保持在设计模式中时,必须能够执行控件中的代码。
4.不要单击工具栏上的“启动”按钮或者按下 F5 键,因为那样会使整个工程组进入运行模式从而无法把新控件添加到窗体中。
5.打开一个控件的设计器会使该控件的所有实例变成非活动的。 更改控件代码窗口的代码也会使控件实例变成非活动的。
6.UserControl 存活期中的关键事件是 Initialize,InitProperties,ReadProperties,WriteProperties 和 Terminate。
7.对于 UserControl 对象而言,Load 和 Unload 事件被ReadProperties 和 WriteProperties 事件所代替。
8. 把控件放入窗体后,它就被视为这个窗体的永久设施了。以控件作者的眼光来看,控件总是在被撤消和重建。
9.控件实例创建之后,可以通过 ReadProperties 事件,从包含此控件实例的窗体所属的 .frm 文件获取该控件所保存的属性值。
10.运行时期的控件实例永远不会获得 WriteProperties 事件,因为它并不需要保存其属性值。这主要是出于 ShapeLabel 的未来的考虑。当它被编译成 .ocx 文件时,它会被添加到另一个工程,把一个实例放入窗体,将此工程编译成一个 .exe 文件并使其运行。 关闭该 .exe 文件时,ShapeLabel 实例能够保存其属性值的唯一地方就是该 .exe 文件。 而正常运作的操作系统不能容许这类行为.
11.在对用户控件进行设计时,要记住只能在由控件的 ScaleWidth 和ScaleHeight 约束的区域内工作。这个区域以外的任何事物对用户都是不可见的。此外,客户区的大小将随着用户的想法而改变。于是 Resize 事件就是控件设计中最重要事件之一。
12.与在类模块中添加属性名和方法类似,借助创建公共过程的方式,可以在 Active 控件中添加属性和方法。
13.这就引入了一个控件的重复主题:容器能决定控件的大部分行为和外观。 容器确定控件的 Name,以及保持相对容器坐标关系的 Top 和 Left 属性。“
14.使用属性过程所创建的一些简单属性将自动显示在 Visual Basic 的属性窗口中。 也可以使控件和属性页相连接,属性页以另一种格式显示控件的各种属性。
15.属性页中象位图之类的二进制信息都被保存在名称相同的二进制文件中,该文件的扩展名为 .pgx。
16.无论何时打开属性页均接收一个 SelectionChanged 事件。 选择控件列表改变时也接收这个事件。 这是必须的,因为“属性页”对话框为非模式对话框,当对话框打开时用户可能选择其他的一些控件。
17.确定一个事件是否发生在特定的位置称为击点检测。或许会希望把击点检测代码放在 shpBack_Click 事件过程中,因为 shpBack 总是要改变大小以便覆盖 ShapeLabel 控件的整个表面。 然而 Shape 控件不会接收 Click 事件。而由包含 Shape 对象的对象来接收 Click 事件,就本例来说是 UserControl 对象。
18.要切换回用工程代替二进制部件状态,可在“文件”菜单上单击“添加工程”并且将 ControlDemo 工程再添加到回工程组中。


当创建一个新控件时一般应遵循的步骤是:

  1. 确定控件将要提供的功能。
  2. 设计控件的外观。
  3. 设计控件的接口,即将显露的属性、方法和控件。
  4. 创建由控件工程和测试工程组成的工程组。
  5. 通过把控件和或代码添加到 UserControl 对象中来实现控件的外观。
  6. 实现控件的接口和功能。
  7. 在添加每一个接口元素或功能时,都要为测试工程增加一些功能,以便测试所添加的新功能。
  8. 设计和实现控件的属性页。
  9. 编译控件部件(.ocx 文件)并用各种可能的应用程序对它进行测试。

如果控件部件所提供的控件不止一个,应当从确定包中应包括那些控件着手工作。 对于单独的控件,测试工程应分别具有相应的测试窗体,另外,至少应有一个把控件放在一起测试的窗体。

 

 

 

 

 

 


 

 


 


 


 


 


 


 


 

 


 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值