Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Добавляет новый объект 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 и обратная связь.