Использование IWin32Window в Fore.NET

Описание проблемы

Ряд свойств/методов, реализованных в Fore сборках, используют тип IWin32Window. Данный тип описывает различные окна платформы. При использовании данных свойств/методов в Fore.NET невозможно в качестве значений указывать .NET-формы т.к. .NET-формы описывает интерфейс System.Windows.Forms.IWin32Window, которой явно не приводим с Fore.NET аналогом интерфейса IWin32Window - Prognoz.Platform.Interop.Forms.IWin32Window.

Способ решения

Для разрешения указанной проблемы был реализован специальный класс IWin32WindowForeAdapter, который реализует интерфейс Prognoz.Platform.Interop.Forms.IWin32Window. Конструктор данного класса имеет один входной параметр, имеющий тип System.Windows.Forms.IWin32Window. При создании экземпляра объекта указанного класса осуществляется преобразование к требуемому типу Prognoz.Platform.Interop.Forms.IWin32Window указанного в качестве параметра окна. Созданный экземпляр объекта можно указывать в качестве параметра в свойствах/методах, использующих тип Prognoz.Platform.Interop.Forms.IWin32Window.

Пример

Для выполнения примера предполагается наличие .NET-формы и расположенной на ней кнопки. В соответствующей .NET-сборке подключена системная сборка платформы Ui.

Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
    WinApp: WinApplicationClassClass = New WinApplicationClassClass();
Begin
    WinApp.InformationBox("Использование IWin32Window"New IWin32WindowForeAdapter(Self));
End Sub;

При нажатии на кнопку будет выведено указанное информационное сообщение. Окно сообщения будет открыто модально относительно текущей .NET-формы.

См. также:

Особенности использования языка Fore.NET