0

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

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

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

4

1 回答 1

1

我相信你是对的,你不能依赖 HFONT 安全地跨进程传递。

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

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

就像我在画画,橙色颜料用完了,我把它放在我的画架上作为第三根管子。我可以伸手去拿你的 easle 并抓住第三个 tupe……但我不能保证它是橙色的……我不能保证它甚至包含油漆!也许你今天在 easle 刷牙……哎呀!

GDI 句柄类似于该示例中的数字“3”。今天,GDI 可能会在所有 easles 上保持相同的管状顺序。它可能会保持其中一些井井有条,而有些则不会(即橙色的'sorta works',但'seafoam green'被破坏了)。它们可能在一个 CE 设备上是有序的,但在另一个设备上却不是。

一如既往,YMMV。

于 2008-09-25T21:47:04.647 回答