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