-1

我们公司在 Alaska Xbase++ 有一个软件。我想用 WPF 使 GUI 现代化,而不用 C# 重写软件。在这种 Alaska Xbase++ 语言中,我可以调用 C/C++ 函数。我相信,可以创建混合 DLL,它具有托管代码,但可以从非托管语言调用,因此可以进行 stdcall。

所以我的计划是我编写一个包装 DLL,它管理所有的东西来创建一个 WPF 窗口和控件(和 eventloop,一切)。在这个 Alaska Xbase++ 语言中,我会调用这个包装 DLL 来在我的应用程序中创建 WPF 窗口和控件。

例如: -WpfWrapper.DLL 在 C# DLL(或从 Xbase++ 应用程序监听数据的应用程序)中:

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

C# DLL 做“WPF 的事情”。

-在阿拉斯加 Xbase++ 语言中,我有一个主窗口。但我想现代化 GUI,我想在那个旧的 Win32 应用程序中创建一些 WPF 窗口,所以我调用 DLL:

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

这只是我的想法..也许还有其他方法。但我想知道是否可以以任何方式将 WPF 窗口和控件集成到旧的 Win32 应用程序中?我相信它确实如此,无论是通过一些包装 DLL 还是通过一些包装应用程序。

请给我一些指导这是如何工作的。在我的旧应用程序中创建的 WPF 窗口必须处于焦点位置,并且位于其他窗口之上。我有我的主窗口的 HWND,我相信它是必要的。

4

1 回答 1

0

我不知道“Alaska Xbase++”是什么,但我猜你问的问题与你应该尝试的相反。您不应该尝试通过从一些晦涩的编程环境调用 C# 来构建 GUI 应用程序。您应该尝试将在晦涩的编程环境中实现的业务逻辑包装在 DLL 中,并从 C# 中调用它。

Xbase++ 是否公开 C 接口?

如果是这样,请创建一个调用您的 Xbase++ 代码的自定义 DLL,并将该 DLL 导入 WPF 应用程序。

于 2020-02-14T17:13:56.513 回答