Get and Set Windows Values Example (VBA)
This example shows how to get and set various DraftSight application and document window
values.
'--------------------------------------------------------------
' Preconditions:
' 1. Create a VBA macro in a software product in which VBA is
' embedded.
' 2. Copy and paste this project into the Visual Basic IDE.
' 3. Add a reference to
' install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll
' 4. Start DraftSight.
' 5. Open the Immediate window.
' 6. Run the macro.
'
' Postconditions:
' 1. Document window is minimized.
' 2. Examine the Immediate window where
' the application and document window handle values,
' visibility values, window states, and frame and
' geometry positions and sizes are printed.
' 3. Interactively maximize the Document window in DraftSight.
'----------------------------------------------------------------
Option Explicit
Sub main()
Dim dsApp As DraftSight.Application
Dim dsDoc As DraftSight.Document
Dim dsAppWindow As DraftSight.DSWindow
Dim dsDocWindow As DraftSight.DSWindow
'Connect to DraftSight
Set dsApp = GetObject(, "DraftSight.Application")
'Abort any command currently running in DraftSight
'to avoid nested commands
dsApp.AbortRunningCommand
'Get application's window handle, visibility, and state
Debug.Print ("Application window using Application object:")
Debug.Print (" Window handle: " & dsApp.GetHWnd)
Debug.Print (" Visible: " & dsApp.Visible)
Debug.Print (" State: " & dsApp.WindowState)
Debug.Print ("")
'Get active document
Set dsDoc = dsApp.GetActiveDocument
If Not dsDoc Is Nothing Then
' Get application's window handle, visibility, and state
Debug.Print ("Application window using DSWindow object:")
Set dsAppWindow = dsApp.GetMainWindow
Dim windowHandle As Long
dsAppWindow.GetHWnd windowHandle
Debug.Print (" Window handle: " & windowHandle)
Debug.Print (" Visible " & dsAppWindow.Visible)
Debug.Print (" State: " & dsAppWindow.WindowState)
Dim x As Long
Dim y As Long
' Get application's frame and geometry positions and sizes
dsAppWindow.GetFramePosition x, y
Debug.Print (" Frame position: " & x & ", " & y)
dsAppWindow.GetFrameSize x, y
Debug.Print (" Frame size: " & x & ", " & y)
dsAppWindow.GetGeometryPosition x, y
Debug.Print (" Geometry position: " & x & ", " & y)
dsAppWindow.GetGeometrySize x, y
Debug.Print (" Geometry size: " & x & ", " & y)
Debug.Print (" ")
' Get document's window handle, visibility, state,
' frame and geometry positions and sizes
Debug.Print ("Document window using DSWindow object before minimizing window:")
Set dsDocWindow = dsDoc.GetWindow()
dsDocWindow.GetHWnd windowHandle
Debug.Print (" Window handle: " & windowHandle)
Debug.Print (" Visible " & dsDocWindow.Visible)
Debug.Print (" State: " & dsDocWindow.WindowState)
dsDocWindow.GetFramePosition x, y
Debug.Print (" Frame position: " & x & ", " & y)
dsDocWindow.GetFrameSize x, y
Debug.Print (" Frame size: " & x & ", " & y)
dsDocWindow.GetGeometryPosition x, y
Debug.Print (" Geometry position: " & x & ", " & y)
dsDocWindow.GetGeometrySize x, y
Debug.Print (" Geometry size: " & x & ", " & y)
'Minimize Document window
dsDocWindow.WindowState = 0
Debug.Print ("")
' Get document's window handle, visibility, state,
' frame and geometry positions and sizes after minimizing
' window
Debug.Print ("Document window using DSWindow object after minimizing the window:")
Set dsDocWindow = dsDoc.GetWindow
dsDocWindow.GetHWnd windowHandle
Debug.Print (" Window handle: " & windowHandle)
Debug.Print (" Visible " & dsDocWindow.Visible)
Debug.Print (" State: " & dsDocWindow.WindowState)
dsDocWindow.GetFramePosition x, y
Debug.Print (" Frame position: " & x & ", " & y)
dsDocWindow.GetFrameSize x, y
Debug.Print (" Frame size: " & x & ", " & y)
dsDocWindow.GetGeometryPosition x, y
Debug.Print (" Geometry position: " & x & ", " & y)
dsDocWindow.GetGeometrySize x, y
Debug.Print (" Geometry size: " & x & ", " & y)
Else
MsgBox ("There are no open documents in DraftSight.")
End If
End Sub