【发布时间】:2012-02-20 16:45:42
【问题描述】:
我今天发现 Windows 7 带有一个令人印象深刻的 MathPanel 实用程序,用于执行方程式的手写识别:
这很好。 (这里我输入了sRGB色彩空间伽玛转换部分的公式)
但现在我似乎无法用它做任何事情。
有一个插入按钮。我会假设单击 Insert 会将其插入到其后面处于活动状态的应用程序中(很像屏幕键盘的工作原理):
除了我认为它会作为粘贴操作进行操作。
我在帮助中找不到有关应用程序需要什么才能使其工作的信息。没有提及某些软件必须支持的任何特殊 API。
我在 MSDN 上也找不到任何关于接受插入方程式需要什么特殊 API 的信息。
我必须实现哪些 API、注册、回调、侦听器、消息、COM 对象才能接收 MathPanel 输入?
我提到MathML的唯一原因是因为SuperUser mentioned MathML上的答案:
理论上,任何支持 MathML(数学标记语言)的应用程序都可以与 Windows 7 数学输入面板一起使用。数学输入面板仅适用于支持 MathML 的程序。以下是一些这样的应用程序:StarOffice、OpenOffice、Opera 和 Maple。
那么我如何让 my 程序支持 MathML?
据我所知,MathML 是一种标记语言;不是 Windows API。这就像说,“我如何让我的程序支持 HTML?” Html是文本,你可以粘贴到任何地方。
除非我“支持”MathML,否则 MathPad 拒绝粘贴?
更新
单击插入后检查剪贴板上的IDataObject,我看到了两种可用格式(都不是文本,这解释了为什么我没有得到任何标记):
格式一:
CLIPFORMAT cfFormat: "MathML Presentation" (49839)
PDVTargetDevice ptd: 0x00000000
DWORD dwAspect: DVASPECT_CONTENT
DWORD lindex: -1
DWORD tymed: 1 (TYMED_HGLOBAL)
格式二:
CLIPFORMAT cfFormat:"MathML" (49838)
PDVTargetDevice ptd: 0x00000000
DWORD dwAspect: DVASPECT_CONTENT
DWORD lindex: -1
DWORD tymed: 1 (TYMED_HGLOBAL)
所以至少现在我有一些剪贴板格式:
- “MathML 演示”
- “MathML”
我仍然无法在 MSDN 上找到有关这两种剪贴板格式的任何信息。
【问题讨论】:
-
看起来是应用程序负责注册剪贴板更新,然后将“MathML”条目作为 XML 提取; dpcarlisle.blogspot.com/2010/01/mathml-on-clipboard.html