【问题标题】:how to get C++ GDI code into a C# project如何将 C++ GDI 代码放入 C# 项目中
【发布时间】:2014-12-13 21:37:18
【问题描述】:

我有 2 个项目,一个 C# 项目包含我需要的大部分内容,还有一个 GDI C++ 项目,它有一个控件和一些我想放入 C# 项目的逻辑。

我是否以某种方式将 GDI C++ 项目包装为控件?是否有一些更新的技术我应该更新 GDI 代码以使用(不确定 GDI 与 GDI+ 有何不同)。

刚开始看这个,不知道如何整合两者。

【问题讨论】:

  • 您还不够了解,无法提出有意义的问题。 C++ 代码使用 GDI 实现绘画是一个无关紧要的细节,更重要的是它如何将其功能暴露给其他代码。有不止一种方法可以做到这一点,比如 RegisterWindowEx() 或 ActiveX,这是您首先需要关注的。
  • Hans,所以我会从 c++ 代码创建一个 dll,它有一个 com 接口(actives 或 registerWindowx)?然后将该dll导入我的C#项目中使用?
  • 您不一定需要使用 COM,例如可以使用 C++/CLI 或 P/Invoke 集成两者。但最好的方法取决于 C++ 代码如何像 Hans 所说的那样公开其功能,因此我们需要更多细节来回答这个问题。

标签: c# c++ gdi


【解决方案1】:

这取决于你的 c++ 代码的复杂性。

如果它很大或很复杂,那么最好将它包装起来并从 c# 中使用它(例如,将它包装在 COM 包装器中,或者甚至将它作为一个单独的进程运行,只在你的主机中显示它的窗口。

如果它不是太复杂,那么将它移植到 c# 可能会更容易和更干净。许多用于逻辑的 C++ 代码很容易移植到 C#,GDI 和 GDI+ 之间几乎没有区别,所以我希望移植相当简单。

决定因素可能只是您自己对使用 com 或让 GDI+ 渲染相同内容的信心。

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多