0

「Big Windows」では GDI ハンドルが一意であり、プロセス固有であることは知っていますが、Windows CE 6.0 でも同じように機能しますか?

例: 私は、他のいくつかのサービスやアプリケーションが使用するフォント管理サービスを持っています。このサービスには、印刷と表示に有効なフォントと構成のリストがあります。それぞれで CreateFontIndirect() が呼び出されています。これらのクライアント アプリケーションのいずれかが特定のフォント (および構成) を要求した場合、適切な HFONT を返すことはできますか? そうでない場合、ハンドルを複製する安全で有効な方法はありますか。カーネル ハンドルの場合は DuplicateHandle です。

私が尋ねる理由は、PostMessage を介して別のアプリケーションに渡された HFONT が正しく動作するのを見たことがありますが、それらが「想定」されているとは思わなかったからです。

4

1 に答える 1

1

私はあなたが正しいと信じています.HFONTがプロセス間で安全に渡されることに依存することはできません.

「私が尋ねる理由は、PostMessage を介して別のアプリケーションに渡された HFONT が正しく動作するのを見たことがありますが、それらが「想定」されているとは思わなかったからです。

それらは正しく渡されていないため、「想定」はありません。HFONT がプロセス間で動作することは保証されていませんが、プロセス間で一意であることも保証されていません。「Arial」は、各アプリケーションの特定のバージョンで、ある時点で 2 つの異なるプロセスで同じ HFONT 値を持つ場合があり、いつでも変更される可能性があります (使用の途中を含む!)

絵を描いていて、オレンジ色の絵の具がなくなったようなものです。これは、イーゼルの 3 番目のチューブとして保持しています。私はあなたのイーゼルに手を伸ばして 3 番目のチューブをつかむことができます... しかし、それがオレンジ色であるという保証はありません... 塗料が含まれているという保証さえありません! おそらく、あなたは今日イーゼルで歯を磨いていました..おっと!

GDI ハンドルは、この例の数字「3」のようなものです。現在、GDI はすべてのイースルでチューブを同じ順序に保つ可能性があります。それらのいくつかは順番に保持されるかもしれません (つまり、オレンジ色の 'sorta works' が 'seafoam green' は破棄されます)。これらは、ある CE デバイスでは正常である可能性がありますが、別の CE デバイスでは正常ではない可能性があります。

いつものYMMVです。

于 2008-09-25T21:47:04.647 に答える