Windows.Add 方法 (Visio)
将新的 Window 对象添加到 Windows 集合。
语法
表达式。添加 (bstrCaption、 nFlags、 nType、 nLeft、 nTop、 nWidth、 nHeight、 bstrMergeID、 bstrMergeClass、 nMergePosition)
表达 一个代表 Windows 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
bstrCaption | 可选 | Variant | 窗口的标题;默认值是“无标题”。 |
nFlags | 可选 | Variant | 初始窗口状态。 可以包含 Visio 类型库中声明的 VisWindowStates 常量的任何组合;默认值因 nType 而异。 |
nType | 可选 | Variant | 新窗口的类型。 可以是在 Visio 类型库中声明的任何一个 VisWinTypes 常量。 对于 Application.Windows,默认为 visStencilAddon;对于 Window.Windows,默认为 visAnchorBarAddon |
nLeft | 可选 | Variant | 窗口左侧的位置。 |
nTop | 可选 | Variant | 窗口顶部的位置。 |
nWidth | 可选 | Variant | 窗口工作区的宽度。 |
nHeight | 可选 | Variant | 窗口工作区的高度。 |
bstrMergeID | 可选 | Variant | 窗口的合并 ID。 |
bstrMergeClass | 可选 | Variant | 窗口的合并类。 |
nMergePosition | 可选 | Variant | 窗口的合并位置。 |
返回值
Window
备注
使用此方法可在 Visio 窗口空间内获取一个空父框架窗口,您可以在该窗口中填充子窗口。 您必须位于 Visio 进程空间(例如,在 DLL 或基于 VSL 的加载项中),才能将此方法返回的 Window 对象用作您窗口的父窗口。
将 WindowHandle32 属性返回的值用作 HWND,以作为您自己的窗口的父窗口使用。
示例
以下宏演示如何使用 Add 方法将 Window 对象添加到 Windows 集合。 该宏创建一个新的空父框架窗口,它固定在绘图窗口的底部。 然后该宏用子窗口(在这种情况下是窗体)填充新的父框架窗口,以便使新窗口不显示为空。
向名为“frmMain”的 Microsoft Visual Basic (VBA) 项目添加一个窗体,然后将名为“txtForm”的“文本框”控件添加到该窗体。
SetParent、FindWindow 和 SetWindowLongLib 函数来自 Windows API,而且是向新窗口添加窗体所必需的。
调整窗体大小时,向窗体模块添加以下代码以调整文本框的大小:
Private Sub UserForm_Resize()
txtForm.Width = txtForm.Parent.Width - 10
txtForm.Height = txtForm.Parent.Height - 10
End Sub
然后向文档项目添加以下代码:
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_CHILD = &H40000000
Private Const WS_VISIBLE = &H10000000
Public Sub AddWindow_Example()
Dim vsoWindow As Visio.Window
Dim frmNewWindow As UserForm
Dim lngFormHandle As Long
'Add a new Anchor Bar window docked to the bottom of the Visio drawing window
Set vsoWindow = ActiveWindow.Windows.Add("My New Window", visWSVisible + visWSDockedBottom, visAnchorBarAddon, , , 300, 210)
'Create a new windows form
Set frmNewWindow = New frmMain
'Get the 32-bit handle of the new window.
lngFormHandle = FindWindow(vbNullString, "My New Window")
SetWindowLong lngFormHandle, GWL_STYLE, WS_CHILD Or WS_VISIBLE
SetParent lngFormHandle, vsoWindow.WindowHandle32
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。