gpt4 book ai didi

c++ - 使用MFC跨进程GDI绘图

转载 作者:太空狗 更新时间:2023-10-29 23:06:10 24 4
gpt4 key购买 nike

我有一个巨大的 MFC MDI 应用程序,它使用设备上下文绘制其可 ScrollView 区域。此应用程序使用第 3 方库在同一 View 区域中进行一些额外的绘制。它的工作原理是将 View 区域的 DC(设备上下文)传递给这个第 3 方库 (dll),然后 DLL 执行非常复杂的附加绘图。

但是,我们正在将整个应用程序转换为 64 位,问题是我们没有这个第 3 方库的 64 位版本。这让我们只有一个选择,那就是将这个第 3 方库移动到一个单独的进程,然后在我们的主应用程序和托管这个第 3 方库的这个新进程之间进行进程外调用。

但是现在,我们如何进行跨进程绘图呢?有什么方法可以使用普通 GDI 或 MFC 来完成这些工作吗?

最佳答案

answer说你不能只是将 HDC 从一个进程传递到另一个进程。

您可以做的是:

  1. 在您的 DC 上发出 GetDIBits 以获取原始位图位。
  2. 使用某种形式的 IPC 将这些移动到 32 位进程。
  3. 使用SetDIBits将它们放入另一个进程的内存DC中。
  4. 允许您的第 3 方库与该 DC 混为一谈。
  5. 以相反的方式执行相同的操作以取回位。

对于 IPC,我建议简单地将一 block 共享内存映射到两个进程中。性能可能会很差,但您应该能够摆脱它。

我相信谷歌浏览器做了类似的事情来将渲染引擎与各个标签隔离开来。

关于c++ - 使用MFC跨进程GDI绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com