2008-09-25 3 views
0

Я знаю, что дескрипторы GDI уникальны и зависят от процесса в «Большой Windows», но работают ли они одинаково в Windows CE 6.0?Совместное использование дескрипторов GDI между процессами в Windows CE 6.0

Например: У меня есть служба управления шрифтами, которую будут использовать несколько других сервисов и приложений. Эта служба имеет список действительных шрифтов и конфигураций для печати и отображения; На каждом из них вызывается CreateFontIndirect(). Когда одно из этих клиентских приложений запрашивает конкретный шрифт (и конфигурацию), могу ли я вернуть ему соответствующий HFONT? Если нет, существует ли безопасный/действительный способ дублирования дескриптора, ala DuplicateHandle для ручек ядра.

Причина, по которой я спрашиваю, заключается в том, что я видел, как HFONT переданы в другое приложение через PostMessage правильно, но я не думал, что они «предполагаются».

ответ

1

Я считаю, что вы правы, вы не можете полагаться на безопасность HFONT для прохождения процессов.

«Причина, по которой я спрашиваю, заключается в том, что я видел, как HFONT передаются в другое приложение через PostMessage правильно, но я не думал, что они« предположительно ».

Они не были переданы правильно, поэтому нет «предполагается». Хотя HFONT не гарантированно работают в разных процессах, они также не гарантируют уникальный через процессы. «Arial» может иметь одно и то же значение HFONT в двух разностных процессах в определенный момент времени с конкретной версией каждого приложения и может меняться в любой момент (включая на полпути через его использование!)

Это как если бы я «Покрасьте», и закончите оранжевую краску, которую я держу в качестве третьей трубки на моей паре. Я мог бы дотянуться до твоей покупки и захватить 3-й туп ... но у меня нет гарантии, что это оранжевый ... у меня нет гарантии, что он даже содержит краску! Возможно, вы сегодня чистили зубы в стиле ... упс!

Ручки GDI похожи на число «3» в этом примере. Сегодня GDI может поддерживать трубку в том же порядке во всех стилях. Это может привести к тому, что некоторые из них будут упорядочены, а некоторые нет (т. Е. Оранжевые «сортировки» работают, но «зеленая зелень» разоряется). Они могут быть в порядке на одном устройстве CE, но не на другом.

Как всегда, YMMV.

+0

Спасибо за объяснение. Я задал вопрос о [msft.public.windowsce.embedded] [1] и диске. (Я думаю) демонстрирует некоторую путаницу с реализацией WinCE. [1]: http://groups.google.com/group/microsoft.public.windowsce.embedded/browse_thread/thread/507a6fe50e1f2697?hl=ru# – DavidEBest 2008-09-26 12:26:21

Смежные вопросы