在Windows CE 6.0中的进程之间共享GDI句柄

时间:2020-03-06 14:43:35  来源:igfitidea点击:

我知道GDI句柄在" Big Windows"中是唯一的并且特定于进程,但是在Windows CE 6.0中它们是否以相同的方式工作?

例如:
我有一个字体管理服务,其他几个服务和应用程序都将使用它。该服务具有用于打印和显示的有效字体和配置的列表;在每个函数上都调用了CreateFontIndirect()。当这些客户端应用程序之一请求特定字体(和配置)时,我可以将其返回适当的HFONT吗?如果不是,是否存在一种安全/有效的方法来复制该句柄,所以对于内核句柄来说,它就是DuplicateHandle。

我问的原因是,我已经看到通过PostMessage传递到另一个应用程序的HFONT可以正常工作,但是我不认为它们是"应该的"。

解决方案

我相信我们是正确的,我们不能依靠HFONT安全地跨流程传递。

'The reason I ask, is that I've seen HFONTs passed to another application through PostMessage work correctly, but I didn't think they were 'supposed' to.'

他们没有正确通过,所以没有"本应"。虽然不能保证HFONT在整个流程中都可以工作,但也不能保证它们在整个流程中都是唯一的。 " Arial"在每个应用程序的特定版本的某个时间点的两个不同过程中可能具有相同的HFONT值,并且可能随时更改(包括使用过程中途!)。

就像我正在绘画,并且用完橙色颜料一样,我将其保留为我的第三根管。我可以伸手去抓第三根铅笔...但是我不能保证它是橙色的...我不能保证它甚至包含油漆!也许我们今天在刷牙在刷牙..哎呀!

GDI句柄在该示例中类似于数字" 3"。如今,GDI可能会将所有导管上的导管保持相同的顺序。它可能会使其中一些保持秩序,而有些则无法保持秩序(即橙色的" sorta作品",但是" seafoam green"被破坏)。它们可能在一个CE设备上是有序的,但在另一个CE设备上却没有。

与往常一样,YMMV。