如何创建自定义 GDI 设备?
是否可以在用户模式下创建自定义 GDI 设备? 这个想法是创建一个设备上下文 (HDC),我们可以将其传递给不透明组件,以便当组件调用 TextOut 等 GDI 函数时,我们可以获得实际的文本字符串。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
是否可以在用户模式下创建自定义 GDI 设备? 这个想法是创建一个设备上下文 (HDC),我们可以将其传递给不透明组件,以便当组件调用 TextOut 等 GDI 函数时,我们可以获得实际的文本字符串。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
我没有太多使用 GDI,但我听说 [metafiles](http://msdn.microsoft.com/en-us/library/dd145051(VS.85).aspx)记录绘图并可以回放。 您也许可以从中获取文本字符串。
我已经详细研究过,您可以使用 CreateEnhMetaFile() 创建一个 GDI,将绘图记录到图元文件中。 使用此 GDI 设备绘制组件。 然后您可以调用
EnumEnhMetaFile()
,并向其传递回调。 您的回调将使用指向ENHMETARECORD
的指针来调用。ENHMETARECORD
以 [EMR
](http://msdn.microsoft.com/en-us/library/dd162512(VS.85).aspx)。 它有一个名为iType
的成员,它是绘图操作的类型。I have not used GDI much, but I've heard that [metafiles](http://msdn.microsoft.com/en-us/library/dd145051(VS.85).aspx) record the drawing and can be played back. You might be able to get the text string from it.
I've looked at it more, and you can create a GDI with
CreateEnhMetaFile()
that records drawing into a metafile. Have the component draw using this GDI device. Then you can callEnumEnhMetaFile()
, passing it a callback. Your callback will get called with a pointer to anENHMETARECORD
. TheENHMETARECORD
begins with an [EMR
](http://msdn.microsoft.com/en-us/library/dd162512(VS.85).aspx). It has a member callediType
that is the type of drawing operation.