Свойства windowsform аналогичные формам у инвентора

Автор Тема: Свойства windowsform аналогичные формам у инвентора  (Прочитано 3518 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн fedorАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
Доброго времени суток!

Начинаю осваивать создание addin для инвентора, и задался таким вопросом!
Какими свойствами должна обладать WindowsForm, чтобы она не отличалась по свойствам стандартной форме операции "Выдавливание"(например).
Т.е., 1). форма является "частью инвентора", а не является отдельным окном как показано на рис. 1

2).После повторного запуска инструмента, появляется еще одна форма и так до бесконечности. Можно ли в свойствах указать только ОДНУ активную форму. Пример на рис. 2

3). Третий пункт рождается из второго, т.е. при активной команде возможно запускать свою. Возможно ли в свойствах указать, запрет открытия других команд при активности первого. пример на рис.3


P.S. вопрос имеет косвенное отношение к api inventor. но всего скорей вы уже сталкивались с подобной проблемой! буду благодарен за помощь

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Сложновато оформлен вопрос, но подразумеваю, что нужно сделать форму частью окна инвентора и что бы эта форма была не модальная.
В WindowsFroms есть метод Show с аргументом для указания владельца формы:
https://msdn.microsoft.com/ru-ru/library/szcefbbd(v=vs.110).aspx
Аргумент должен быть завернут в класс реализующий интерфейс System.Windows.Forms.IWin32Window:
Код - C# [Выбрать]
  1. /////////////////////////////////////////////////////////////
  2. // Use: a small utility class to create child dialogs
  3. /////////////////////////////////////////////////////////////
  4. class WindowWrapper : System.Windows.Forms.IWin32Window
  5. {
  6.     private IntPtr mHwnd;
  7.  
  8.     public WindowWrapper(IntPtr handle)
  9.     {
  10.         mHwnd = handle;
  11.     }
  12.  
  13.     public IntPtr Handle
  14.     {
  15.         get
  16.         {
  17.             return mHwnd;
  18.         }
  19.     }
  20. }
  21.  


Вызов окна что то типа:
Код - C# [Выбрать]
  1.  MyForm myForm = new MyForm;
  2.  myForm.Show(New WindowWrapper(m_inventorApplication.MainFrameHWND));
  3.  

На VB.NET:

Код - vb.net [Выбрать]
  1. #Region "hWnd Wrapper Class"
  2. ' This class is used to wrap a Win32 hWnd as a .Net IWind32Window class.
  3. ' This is primarily used for parenting a dialog to the Inventor window.
  4. '
  5. ' Пример вызова:
  6. ' myForm.Show(New WindowWrapper(m_inventorApplication.MainFrameHWND))
  7. '
  8. Public Class WindowWrapper
  9.    Implements System.Windows.Forms.IWin32Window
  10.    Public Sub New(ByVal handle As IntPtr)
  11.       _hwnd = handle
  12.    End Sub
  13.  
  14.    Public ReadOnly Property Handle() As IntPtr _
  15.      Implements System.Windows.Forms.IWin32Window.Handle
  16.       Get
  17.          Return _hwnd
  18.       End Get
  19.    End Property
  20.  
  21.    Private _hwnd As IntPtr
  22. End Class
  23. #End Region
  24.