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

时间:2008-09-25 15:21:55

标签: c++ windows-ce gdi

我知道GDI句柄在“大窗口”中是唯一且特定于流程的,但它们在Windows CE 6.0中的工作方式是否相同?

例如: 我有一个字体管理服务,其他几个服务和应用程序将使用。此服务包含用于打印和显示的有效字体和配置列表;已经在每个上调用了CreateFontIndirect()。当其中一个客户端应用程序请求特定字体(和配置)时,我可以返回适当的HFONT吗?如果没有,是否有一种安全/有效的方法来复制句柄,ala DuplicateHandle用于内核句柄。

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

1 个答案:

答案 0 :(得分:1)

我相信你是对的,你不能依靠HFONTs安全地传递过程。

  

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

他们没有正确传递,所以没有'应该'。虽然不保证HFONT不会跨进程工作,但它们也不能保证跨进程唯一。 'Arial'在每个应用程序的特定版本的某个时间点的两个不同进程中可能具有相同的HFONT值,并且可能随时改变(包括使用它的中途!)

如果我正在画画,并且用完橙色油漆,我将其保留为我的第三管。我可以达到你的宽容并抓住第三个tupe ...但我不能保证它是橙色的...我不能保证它甚至包含油漆!也许你今天在宽松的地方刷牙了。哎呀!

GDI句柄与该示例中的数字“3”类似。今天,GDI可能会在所有情况下保持同样的顺序。它可能会使它们中的一些保持有序,有些则没有(即橙色'sorta有效',但'seafoam green'被破坏了)。它们可能在一个CE设备上有序,但在另一个CE设备上没有。

一如既往,YMMV。