Compartir a través de


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.