Método Windows.Add (Visio)
Agrega un objeto Window nuevo a la colección Windows.
Sintaxis
expresión. Add (bstrCaption, nFlags, nType, nLeft, nTop, nWidth, nHeight, bstrMergeID, bstrMergeClass, nMergePosition)
Expresión Variable que representa un objeto de Windows .
Parameters
Nombre | Obligatorio/opcional | Tipo de datos | Descripción |
---|---|---|---|
bstrCaption | Opcional | Variant | Título de la ventana; el predeterminado es "Sin título". |
nFlags | Opcional | Variant | Estado inicial de la ventana. Puede contener cualquier combinación de constantes VisWindowStates declaradas en la biblioteca de tipos de Visio; el valor predeterminado varía en función de nType. |
nType | Opcional | Variant | Tipo de la nueva ventana. Puede ser cualquiera de las constantes VisWinTypes declaradas en la biblioteca de tipos de Visio. El valor predeterminado es visStencilAddon para Application.Windows y visAnchorBarAddon para Window.Windows |
nLeft | Opcional | Variant | Posición del lado izquierdo de la ventana. |
Ntop | Opcional | Variant | Posición de la parte superior de la ventana. |
nWidth | Opcional | Variant | Ancho del área de cliente de la ventana. |
nHeight | Opcional | Variant | Alto del área de cliente de la ventana. |
bstrMergeID | Opcional | Variant | Identificador de fusión de la ventana. |
bstrMergeClass | Opcional | Variant | Clase de fusión de la ventana. |
nMergePosition | Opcional | Variant | Posición de fusión de la ventana. |
Valor devuelto
Window
Comentarios
Utilice este método para obtener una ventana de marco principal vacía dentro del espacio de ventanas de Visio en la que puede incluir ventanas secundarias. Debe encontrarse en el espacio de procesos de Visio (por ejemplo, en un complemento basado en DLL o VSL) para poder utilizar el objeto Window devuelto por este método como ventana principal de las demás ventanas.
Utilice el valor devuelto por la propiedad WindowHandle32 como un objeto HWND para emplearlo como ventana principal de sus propias ventanas.
Ejemplo:
En la macro siguiente se muestra cómo usar el método Add para agregar un objeto Window a la colección de Windows . Crea una ventana de marco principal nueva y vacía, acoplada a la parte inferior de la ventana de dibujo. A continuación, incluye en ella una ventana secundaria, en este caso un formulario, con objeto de que la nueva ventana no aparezca vacía.
Agregue al proyecto de Microsoft Visual Basic (VBA) un formulario denominado frmMain y, a continuación, agregue un control TextBox denominado txtForm a dicho formulario.
Las funciones SetParent, FindWindow y SetWindowLongLib pertenecen a la API de Windows, y son necesarias para agregar el formulario a la nueva ventana.
Agregue el código siguiente al módulo de formulario para cambiar de tamaño el cuadro de texto una vez que se haya modificado el tamaño del formulario:
Private Sub UserForm_Resize()
txtForm.Width = txtForm.Parent.Width - 10
txtForm.Height = txtForm.Parent.Height - 10
End Sub
A continuación, agregue el código siguiente al proyecto de documento:
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
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.