4.1. Управление окном приложения (Application Window)

Источник здесь.[перевод не проверен];[перевёл Андрей Бушман]

    Способность управления основным окном приложения (Application window) предоставляет разработчикам гибкость, необходимую для создания эффективных и интеллектуальных приложений. Иногда будет уместно для вашего приложения свернуть окно приложения AutoCAD, возможно в то время когда ваш код выполняет работу в другом приложении, таком как Microsoft® Excel®. Дополнительно вы зачастую пожелаете проверить статус окна приложения AutoCAD прежде чем выполнить такие задачи как предоставление подсказки для ввода пользователя.
    Используя методы и свойства, имеющихся в объекте приложения (Application object), вы можете изменить позицию, размер и видимость окна приложения. Вы так же можете использовать свойство WindowState (статус окна) для минимизации, максимизации и проверки текущего статуса окна приложения.

Позиция и размеры окна приложения (Application window)

    В этом примере используются свойства Location (размещение) и Size (размер) для позиционирования левого верхнего угла окна приложения AutoCAD на экране и задания ему размера в 400 пикселей по ширине и 400 пикселей по высоте.

    Примечание. Следующие примеры требуют библиотеки PresentationCore (PresentationCore.dll), которую необходимо подключить к проекту. Используйте диалоговое окно "Add Reference" (добавление ссылки) и выберите PresentationCore на вкладке .Net.

Код VB.NET

   1:  Imports System.Drawing
   2:  Imports Autodesk.AutoCAD.Runtime
   3:  Imports Autodesk.AutoCAD.ApplicationServices
   4:  <CommandMethod("PositionApplicationWindow")> _
   5:  Public Sub PositionApplicationWindow()
   6:   
   7:   '' Позиционирование окна приложения
   8:   Dim ptApp As Point = New Point(0, 0)
   9:   Application.MainWindow.Location = ptApp
  10:   
  11:   '' Назначение размера окну приложения
  12:   Dim szApp As Size = New Size(400, 400)
  13:   Application.MainWindow.Size = szApp
  14:  End Sub

Код C#

   1:  using System.Drawing;
   2:  using Autodesk.AutoCAD.Runtime;
   3:  using Autodesk.AutoCAD.ApplicationServices; 
   4:  [CommandMethod("PositionApplicationWindow")]
   5:  public static void PositionApplicationWindow()
   6:  {
   7:    // Позиционирование окна приложения
   8:    Point ptApp = new Point(0, 0);
   9:    Application.MainWindow.Location = ptApp; 
  10:   
  11:    // Назначение размера окну приложения
  12:    Size szApp = new Size(400, 400);
  13:    Application.MainWindow.Size = szApp;
  14:  }

Код VBA / ActiveX

   1:  Sub PositionApplicationWindow()
   2:   
   3:      '' Позиционирование окна приложения
   4:      ThisDrawing.Application.WindowTop = 0
   5:      ThisDrawing.Application.WindowLeft = 0 
   6:   
   7:      '' Назначение размера окну приложения
   8:      ThisDrawing.Application.width = 400
   9:      ThisDrawing.Application.height = 400
  10:  End Sub

Минимизация и максимизация окна приложения AutoCAD

    Примечание. Следующие примеры требуют библиотеки PresentationCore (PresentationCore.dll), которую необходимо подключить к проекту. Используйте диалоговое окно "Add Reference" (добавление ссылки) и выберите PresentationCore на вкладке .Net.

Код VB.NET

   1:  Imports System.Drawing
   2:  Imports Autodesk.AutoCAD.Runtime
   3:  Imports Autodesk.AutoCAD.ApplicationServices
   4:  Imports Autodesk.AutoCAD.Windows 
   5:   
   6:  <CommandMethod("MinMaxApplicationWindow")> _
   7:  Sub MinMaxApplicationWindow()
   8:   
   9:    '' Минимизирование окна приложения
  10:    Application.MainWindow.WindowState = Window.State.Minimized
  11:    MsgBox("Минимизировано", MsgBoxStyle.SystemModal, "MinMax") 
  12:   
  13:    '' Максимизация окна приложения
  14:    Application.MainWindow.WindowState = Window.State.Maximized
  15:    MsgBox("Максимизировано", MsgBoxStyle.SystemModal, "MinMax")
  16:  End Sub

Код C#

   1:  using System.Drawing;
   2:  using Autodesk.AutoCAD.Runtime;
   3:  using Autodesk.AutoCAD.ApplicationServices;
   4:  using Autodesk.AutoCAD.Windows; 
   5:   
   6:  [CommandMethod("MinMaxApplicationWindow")]
   7:  public static void MinMaxApplicationWindow()
   8:  {
   9:    // Минимизация окна приложения
  10:    Application.MainWindow.WindowState = Window.State.Minimized;
  11:    System.Windows.Forms.MessageBox.Show("Минимизировано", "MinMax",
  12:                System.Windows.Forms.MessageBoxButtons.OK, 
  13:                System.Windows.Forms.MessageBoxIcon.None, 
  14:                System.Windows.Forms.MessageBoxDefaultButton.Button1, 
  15:                System.Windows.Forms.MessageBoxOptions.ServiceNotification); 
  16:   
  17:    // Максимизация окна приложения
  18:    Application.MainWindow.WindowState = Window.State.Maximized;
  19:    System.Windows.Forms.MessageBox.Show("Максимизировано", "MinMax"); 
  20:  }

Код VBA / ActiveX

   1:  Sub MinMaxApplicationWindow()
   2:   
   3:      '' Минимизация окна приложения
   4:      ThisDrawing.Application.WindowState = acMin
   5:      MsgBox "Минимизировано" 
   6:   
   7:      '' Максимизация окна приложения
   8:      ThisDrawing.Application.WindowState = acMax
   9:      MsgBox "Максимизировано"
  10:  End Sub

Определение текущего состояния окна приложения

    Этот пример определяет состояние окна приложения и сообщает об этом состоянии пользователю через окно сообщения.

Код VB.NET

   1:  Imports Autodesk.AutoCAD.Runtime
   2:  Imports Autodesk.AutoCAD.ApplicationServices
   3:  Imports Autodesk.AutoCAD.Windows 
   4:   
   5:  <CommandMethod("CurrentWindowState")> _
   6:  Public Sub CurrentWindowState()
   7:    System.Windows.Forms.MessageBox.Show("The application window is " + _
   8:                                         Application.MainWindow.WindowState.ToString(), _
   9:                                         "Window State")
  10:  End Sub

Код C#

   1:  using Autodesk.AutoCAD.Runtime;
   2:  using Autodesk.AutoCAD.ApplicationServices;
   3:  using Autodesk.AutoCAD.Windows; 
   4:   
   5:  [CommandMethod("CurrentWindowState")]
   6:  public static void CurrentWindowState()
   7:  {
   8:    System.Windows.Forms.MessageBox.Show("The application window is " + 
   9:                                         Application.MainWindow.WindowState.ToString(), 
  10:                                         "Window State");
  11:  }

Код VBA / ActiveX

   1:  Sub CurrentWindowState()
   2:      Dim CurrWindowState As Integer
   3:      Dim msg As String
   4:      CurrWindowState = ThisDrawing.Application.WindowState
   5:      msg = Choose(CurrWindowState, "Normal", _
   6:                   "Minimized", "Maximized") 
   7:      MsgBox "The application window is " + msg
   8:  End Sub

Управление видимостью окна приложения

    В следующем коде используется свойство Visible (видимость), для того, чтобы сделать приложение AutoCAD сначала невидимым, а затем снова видимым.

Код VB.NET

   1:  Imports Autodesk.AutoCAD.Runtime
   2:  Imports Autodesk.AutoCAD.ApplicationServices
   3:  Imports Autodesk.AutoCAD.Windows 
   4:   
   5:  <CommandMethod("HideWindowState")> _
   6:  Public Sub HideWindowState()
   7:   
   8:    '' Скрыть окно приложения
   9:    Application.MainWindow.Visible = False
  10:    MsgBox("Невидимое", MsgBoxStyle.SystemModal, "Показать/Скрыть") 
  11:   
  12:    '' Отобразить окно приложения
  13:    Application.MainWindow.Visible = True
  14:    MsgBox("Видимое", MsgBoxStyle.SystemModal, "Показать/Скрыть")
  15:  End Sub

Код C#

   1:  using Autodesk.AutoCAD.Runtime;
   2:  using Autodesk.AutoCAD.ApplicationServices;
   3:  using Autodesk.AutoCAD.Windows; 
   4:   
   5:  [CommandMethod("HideWindowState")]
   6:  public static void HideWindowState()
   7:  {  
   8:    // Скрыть окно приложения
   9:    Application.MainWindow.Visible = false;
  10:    System.Windows.Forms.MessageBox.Show("Невидимо", "Показать/Скрыть"); 
  11:   
  12:    // Отобразить окно приложения
  13:    Application.MainWindow.Visible = true;
  14:    System.Windows.Forms.MessageBox.Show("Видимое", "Показать/Скрыть");
  15:  }

Код VBA / ActiveX

   1:  Sub HideWindowState()
   2:      '' Скрыть окно приложения
   3:      ThisDrawing.Application.Visible = False
   4:      MsgBox "Невидимое" 
   5:      '' Отобразить окно приложения
   6:      ThisDrawing.Application.Visible = True
   7:      MsgBox "Видимое"
   8:  End Sub

Comments