2011-04-02 44 views
0

我创建了应用程序,并且为它编写的所有插件都应该在我的表单上绘制特殊位置,这些位置将随机选择或专门选择插件,因此每次坐标都是随机的。他们还应该使用标准的Windows GDI函数,如Rectangle(),FillRect(),TextOutA()等。 什么是更好的方法来完成这个?我知道我应该在我的程序中绘制引擎,我有2个选择:使用命名管道或使用Windows消息。也许有人有其他方法实施和测试?通过第三方插件在我的应用程序中实现绘图的更好方法是什么?

回答

0

为了使用GDI功能,他们需要访问HDC句柄。如果您的应用程序将TPanel或其他合适的窗口容器用于绘制,则可以将容器的HWND句柄传递给插件,然后插件可以在需要时通过GetDC()GetWindowDC()手动获取HDC。如果您选择将实际的HDC传递给插件,那么您可以预留TPaintBox或其他合适的非窗口容器,而不需要专用的HWND及相关资源。

+0

谢谢,我更喜欢做GetDCEx()从表单HDC提取修剪区域到插件HDC,但是这个句柄对另一个进程有效吗? – Sergey 2011-04-04 12:30:44

+0

@Sergey:不,它不会,但是如果你的插件是DLL,那么它们将运行在主exe文件进程的地址空间中,所以跨越DLL边界传递句柄是安全的。 – 2011-04-07 16:55:02

相关问题