一个类似于 VS.NET 2003 的 ATL 工具箱控件






4.66/5 (8投票s)
一个 ATL 工具箱控件。
引言
本文介绍了一个与 Visual Studio .NET 2003 中使用的工具箱控件类似的控件。主要目标是最大程度地模仿 VS.NET 工具箱对象模型和 GUI 行为。它使用 ATL ActiveX 控件、WTL 7.5 以及 STL 和 ATL 集合编写。
概述
由于我在互联网上找不到这样的控件,我决定自己写一个。起初,我必须与 GUI 斗争,但当我找到了 Bjarke Viksoe 写的很棒的文章 MS Access Bar 时,这场斗争就结束了。
我没有太多时间来完全描述每个接口的每一个方法,但我会给你一个简短的概述。此版本的工具箱包含一些我尚未修复的错误(通过从弹出菜单中选择“上移/下移”来移动选项卡……尝试一下你就会发现它们),并且由于时间原因工作尚未完成——但我在努力。
实现
工具箱是一个经典的纯 ATL 控件。根据我的需求,我不得不扩展 Bjarke Viksoe 的 MS Access Bar 控件(我更改了绘制选项卡的 [代码] 并添加了一些辅助方法)。
工具箱控件包含六个接口
IToolbox
IToolBoxTab
ITooBoxItem
IToolBoxTabs
IToolBoxItems
IToolboxEvents
与 GUI 相关的接口
IToolbox
代表主控件。
IToolBoxTab
代表一个工具箱选项卡对象。您可以通过拖动鼠标或从弹出菜单中选择相应的命令来重新排列选项卡位置(此功能 [不] 能正常工作)。
IToolBoxItem
代表一个工具箱选项卡项对象。
有四种类型的选项卡项(名称借用自 VS.NET 2003 工具箱,我认为它们是 [不言而喻] 的 :-)
ToolBoxItemFormatText
- 数据包含文本值,并显示“文本”图标。ToolBoxItemFormatHTML
– 数据包含文本值,并显示“html”图标。ToolBoxItemFormatGUID
– 一个 ActiveX 控件,数据包含控件的 GUID,并显示来自控件 DLL 的图标。ToolBoxItemFormatPointer
– 显示“箭头”图标,数据属性为空。
所描述接口的功能与 VS.NET 2003 工具箱接口 几乎相同,并 [带] 有一些额外的 [方法] 和属性。接口 IToolboxEvents
是一个 dispatch 事件接口。
集合和枚举接口
有两个集合和枚举接口(有关这类接口的更多信息,请参阅这篇 文章)
IToolBoxTabs
工具箱选项卡对象的集合。
IToolBoxItems
工具箱选项卡项对象的集合。
这些接口允许您使用 For
..Next
和 For
...Each
语法从 Visual Basic(或 VB 脚本)操作对象。
Private Sub Form_Load()
Dim tab As ToolBoxTab
Set tab = Toolbox1.ToolBoxTabs.Add("Tb 1")
For Each tab In Toolbox1.ToolBoxTabs
tb.Name = "Tab"
Next
End Sub
事件
有一个事件分发接口 IToolboxEvents
,它与 Toolbox
对象相关。
属性页
在此版本中,工具箱有自己的属性页,用于启用弹出菜单及其“自定义”菜单项。它还有一个标准的字体属性页。
弹出菜单
选项卡和选项卡项有两个不同的弹出菜单。对于选项卡项,您可以剪切、复制和粘贴选项卡项,或将剪贴板中的文本粘贴到工具箱中,作为 ToolBoxItemFormatText
类型的选项卡项。
参考文献
- MS Access Bar – Bjarke Viksoe 编写。
- DataObject and other stuf - Bjarke Viksoe 编写。
- CComBool – Chris Sells 编写。
历史
- 2005 年 10 月 7 日 – 初始版本。