我知道GDI句柄在“ Big Windows”中是唯一的且特定于进程,但是在Windows CE 6.0中它们的工作方式相同吗?
例如:
我有一个字体管理服务,其他几个服务和应用程序都将使用它。该服务具有用于打印和显示的有效字体和配置的列表;在每个函数上都调用了CreateFontIndirect()。当这些客户端应用程序之一请求特定的字体(和配置)时,我可以将其返回适当的HFONT吗?如果不是,是否存在一种安全/有效的方法来复制该句柄,所以对于内核句柄来说,它就是DuplicateHandle。
我问的原因是,我已经看到通过PostMessage传递给另一个应用程序的HFONT可以正常工作,但是我不认为它们是“应该的”。
最佳答案
我相信您是正确的,您不能依靠HFONT安全地跨流程传递。
“我问的原因是,我已经看到通过PostMessage传递给另一个应用程序的HFONT可以正常工作,但是我不认为它们是“应有的”。
它们没有正确通过,因此没有“本应”。虽然不能保证HFONT在整个流程中都可以工作,但是也不保证在整个流程中它们都是唯一的。 “ Arial”在每个应用程序的特定版本的某个时间点的两个不同过程中可能具有相同的HFONT值,并且可能随时更改(包括使用过程中途!)。
就像我正在绘画,并且用完橙色颜料一样,我将其保留为我的第三根管。我可以伸手去拿第三根铅笔...但是我不能保证它是橙色的...我不能保证它甚至包含油漆!也许您今天在刷牙在刷牙..哎呀!
GDI句柄在该示例中类似于数字“ 3”。如今,GDI可能会将所有导管上的导管保持相同的顺序。它可能会使其中的一些保持秩序,而有些则无法保持秩序(即橙色的“ sorta作品”,但是“ seafoam green”已消失)。它们可能在一个CE设备上是按顺序排列的,但在另一个CE设备上不是。
与往常一样,YMMV。
关于c++ - 在Windows CE 6.0中的进程之间共享GDI句柄,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/133948/