Могу ли я использовать WPF в приложении win32? - PullRequest
0 голосов
/ 14 февраля 2020

Наша компания имеет программное обеспечение на Аляске Xbase ++. Я хочу модернизировать GUI с WPF, не переписывая программное обеспечение в C#. В этом языке Аляски Xbase ++ у меня есть возможность вызывать функции C / C ++. Я полагаю, что возможно создать гибридную DLL, которая имеет управляемый код, но может вызываться из неуправляемого языка, так что делает stdcall.

Итак, я планирую написать DLL-оболочку, которая управляет всем, что нужно для создания окна WPF и элементов управления (и eventl oop, всего). На этом языке Аляски Xbase ++ я бы назвал эту DLL-оболочку для создания окна WPF и элементов управления в моем приложении.

Например: -WpfWrapper.DLL в C# DLL (или приложении, которое прослушивает данные из приложения Xbase ++):

Function CreateWpfWindow(title) {..}
Function CreateWpfButton(caption, x, y, parent) {..}

C# DLL, выполняющая "вещи WPF".

- На языке Alaska Xbase ++ у меня есть главное окно. Но я хочу модернизировать GUI, я хочу создать какое-то окно WPF в этом старом приложении Win32, поэтому я вызываю DLL:

nHandle=CreateWpfWindow("My WPF window in Alaska Xbase++!")
CreateWpfButton("My button", 100, 100, nHandle)

Это только мои мысли .. Может быть, есть другой способ , Но мне интересно, можно ли в ЛЮБОМ способе интегрировать окно WPF и элементы управления в старое приложение Win32? Я полагаю, что это возможно, либо через какую-нибудь DLL-оболочку, либо через какое-либо приложение-оболочку.

Пожалуйста, дайте мне несколько советов, как это может работать. Созданное окно WPF в моем старом приложении должно быть в фокусе и выше других windows. У меня есть HWND моего главного окна, я считаю, что это необходимо.

1 Ответ

0 голосов
/ 14 февраля 2020

Я не знаю, что такое "Alaska Xbase ++", но я думаю, что вопрос, который вы задаете, является противоположностью того, что вы должны попробовать. Вы не должны пытаться создать приложение GUI, вызывая C# из какой-то непонятной среды программирования. Вы должны попытаться обернуть свою бизнес-логику c, реализованную в непонятной среде программирования, в DLL и вызвать ее из C#.

Предоставляет ли Xbase ++ интерфейс C?

Если это так, создайте пользовательскую DLL, которая вызывает ваш код Xbase ++ и DllImport этой DLL в приложение WPF.

...