Как создать пользовательское устройство GDI?

Можно ли создать пользовательское устройство GDI в пользовательском режиме? Идея состоит в том, чтобы создать контекст устройства (HDC), который мы можем передать непрозрачному компоненту, чтобы, когда компонент вызывает функции GDI, такие как TextOut, мы могли получить реальную текстовую строку.


gdi
person Vladimir Panteleev    schedule 18.04.2009    source источник


Ответы (1)


Я мало использовал GDI, но слышал, что [метафайлы](http://msdn.microsoft.com/en-us/library/dd145051(VS.85).aspx) записать рисунок и его можно воспроизвести. Возможно, вы сможете получить текстовую строку из него.

Я посмотрел на это подробнее, и вы можете создать GDI с CreateEnhMetaFile(), который записывает рисунок в метафайл. Нарисуйте компонент, используя это устройство GDI. Затем вы можете вызвать EnumEnhMetaFile(), передав ему обратный вызов. Ваш обратный вызов будет вызван указателем на ENHMETARECORD. ENHMETARECORD начинается с [EMR](http://msdn.microsoft.com/en-us/library/dd162512(VS.85).aspx). У него есть член с именем iType, который является типом операции рисования.

person Jordan Miner    schedule 20.04.2009
comment
Спасибо, это как раз то, что я искал! - person Vladimir Panteleev; 22.04.2009