Совместное использование дескрипторов GDI между процессами в Windows CE 6.0 - PullRequest
0 голосов
/ 25 сентября 2008

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

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

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

1 Ответ

1 голос
/ 26 сентября 2008

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

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

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

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

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

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

...