我们在Win中运行了一个Gtk +应用程序。它依靠GtkClipboard
和相关机器通过Win OS剪贴板执行剪切/复制/粘贴(CCP)。到目前为止实施的所有CCP都能正常工作,我们可以使用各种应用程序与我们的Gtk应用程序之间的CCP,以及多种目标/格式。
然而,Win OS剪贴板和#34;目标"之间存在奇怪的差异。以及GtkClipboard
"目标",其中"目标"是剪贴板"所有者"的格式。可以转换成。
运行WinOS剪贴板查看器(clpbrd.exe),并从Excel中复制选择,可以看到剪贴板所有者(在本例中为Excel通过OLE)可以转换当前复制的选择的目标。 Excel特定目标是"灰色"在某种意义上,clpbrd.exe无法转换为那些,但是收件人程序可能具有进行转换的机制,如下图所示。据推测,这个"灰白"是因为Excel"通过OleClipboard附加到Win剪贴板。
例如,我们有可以接收各种Excel格式的代码,例如SYLK,XML Spreadsheet等。例如,如果选择的Excel Copy> d选择粘贴Gtk Target为XML Spreadsheet,那么Gtk方面,我们收到了一个XML" text"可以使用我们的XML解析器等解析的流。这应该是应有的。
但是,如果在Gtk端,则执行gtk_clipboard_request_targets()
以获得(假设为)剪贴板所有者(Excel)可以转换为的目标(格式)的相同列表。但是,我们打印出Targets Gtk发现,它是根据此图像的列表:
虽然有很多相似之处,但这两个列表是不同的。例如,原始(clibrd.exe)列表将SYLK作为所有者(Excel)准备转换为的目标/格式之一。然而,Gtk制作的列表不包括SYLK。
这种差异适用于各种Win / Excel版本组合/排列(XP,Win7,32 / 64,Excel XP,Excel 10等)。
...给出了什么?显然,在OS剪贴板中,Excel声称能够转换为SYLK,那么为什么Gtk查询看不到呢? Gtk查询肯定会看到Excel特定的格式(例如任何BIFF等),为什么奇怪的差异?