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