我今天发现 Windows 7 带有一个非常令人印象深刻的 MathPanel 实用程序,用于执行方程式的手写识别:
这很好。(这里我输入了sRGB色彩空间伽玛转换部分的公式)
但现在我似乎无法用它做任何事情。
有一个插入按钮。我会假设单击“插入”会将其插入到其后面处于活动状态的应用程序中(很像屏幕键盘的工作原理):
除了我认为它将作为粘贴操作进行操作。
我在帮助中找不到有关应用程序需要什么才能使其工作的信息。没有提及某些软件必须支持的任何特殊 API。
我也无法在 MSDN 上找到任何关于接受插入方程式需要什么特殊 API 的信息。
我必须实现哪些 API、注册、回调、侦听器、消息、COM 对象才能接收 MathPanel 输入?
我提到MathML的唯一原因是因为SuperUser上的一个答案提到了 MathML :
理论上,任何支持MathML(数学标记语言)的应用程序都可以与 Windows 7 数学输入面板一起使用。数学输入面板仅适用于支持 MathML 的程序。这里有一些这样的应用程序:StarOffice、OpenOffice、Opera 和 Maple。
那么我如何让我的程序支持 MathML?
据我所知 MathML 是一种标记语言;不是 Windows API。这就像说,“我如何让我的程序支持 HTML?” Html 是文本,您可以将其粘贴到任何地方。
除非我“支持”MathML,否则 MathPad 拒绝粘贴?
更新
IDataObject
单击Insert后检查剪贴板上的,我看到两种可用格式(这两种格式都不是文本,这解释了为什么我没有得到任何标记):
格式一:
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)
所以至少现在我有一些剪贴板格式:
- “数学机器学习演示”
- “数学机器学习”
我仍然在 MSDN 上找不到任何关于剪贴板格式的信息。