我有一个巨大的MFC MDI应用程序,它使用设备上下文绘制其可滚动视图区域。此应用程序使用第三方库在同一视图区域中执行一些其他绘图。它的工作原理是将视图区域的DC(设备上下文)传递给第三方库(dll),然后DLL执行相当复杂的附加绘图。
但是,我们将整个应用程序转换为64位,问题是我们没有64位版本的第三方库。这使我们只有一个选项,那就是将第三方库移动到一个单独的进程,然后在我们的主应用程序和托管这个第三方库的新进程之间进行进程外调用。
但是现在,我们如何进行跨流程绘图?有没有办法使用普通的GDI或MFC来做这些事情?
答案 0 :(得分:1)
此answer表示您不能将HDC
从一个流程传递到另一个流程。
您可以做的是:
GetDIBits
以获取原始位图位。SetDIBits
将其放入另一个进程的内存DC中。对于IPC,我建议简单地将一大块共享内存映射到两个进程中。性能可能会非常差,但你应该能够逃脱它。
我相信Google Chrome会做类似的工作,将渲染引擎与各个标签隔离开来。