Поделиться через


Метод Windows.Add (Visio)

Добавляет новый объект Window в коллекцию Windows .

Синтаксис

expression. Add (bstrCaption, nFlags, nLeft, nLeft, nTop, nWidth, nHeight, bstrMergeID, bstrMergeClass, nMergePosition)

Выражение Переменная, представляющая объект Windows .

Параметры

Имя Обязательный или необязательный Тип данных Описание
bstrCaption Необязательный Variant Заголовок окна; значение по умолчанию — "Без названия".
nFlags Необязательный Variant Начальное состояние окна. Может содержать любое сочетание констант VisWindowStates , объявленных в библиотеке типов Visio; значение по умолчанию зависит от типа nType.
nType Необязательный Variant Тип нового окна. Может быть любой из констант VisWinTypes , объявленных в библиотеке типов Visio. По умолчанию — visStencilAddon для Application.Windows; по умолчанию — visAnchorBarAddon для Window.Windows
nLeft Необязательный Variant Положение левой части окна.
Ntop Необязательный Variant Положение верхней части окна.
nWidth Необязательный Variant Ширина клиентской области окна.
nHeight Необязательный Variant Высота клиентской области окна.
bstrMergeID Необязательный Variant Слияние идентификатора окна.
bstrMergeClass Необязательный Variant Класс merge окна.
nMergePosition Необязательный Variant Объединение позиции окна.

Возвращаемое значение

Окно

Замечания

Используйте этот метод, чтобы получить пустое родительское окно фрейма в пространстве окна Visio, которое можно заполнить дочерними окнами. Вы должны находиться в пространстве процессов Visio (например, в надстройке на основе БИБЛИОТЕК DLL или VSL), чтобы использовать объект Window, возвращенный этим методом, в качестве родительского объекта для окон.

Используйте значение, возвращаемое свойством WindowHandle32 , в качестве HWND для использования в качестве родительского элемента в собственных окнах.

Пример

В следующем макросе показано, как с помощью метода Add добавить объект Window в коллекцию Windows . Он создает пустое окно родительского кадра, закрепленное в нижней части окна документа. Затем он заполняет новое родительское окно кадра дочерним окном, в данном случае формой, чтобы новое окно не отображалось пустым.

Добавьте форму в проект Microsoft Visual Basic (VBA) с именем frmMain, а затем добавьте в форму элемент управления TextBoxс именем txtForm .

Функции SetParent, FindWindow и SetWindowLongLib относятся к API Windows и необходимы для добавления формы в новое окно.

Добавьте следующий код в модуль формы, чтобы изменить размер текстового поля при изменении размера формы:

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 и обратная связь.