Qt使用什么API与Windows剪贴板进行交互?

时间:2012-05-26 00:28:03

标签: qt clipboard

我一直在浏览Qt源代码,试图找到实际的系统调用,但似乎Qt没有使用MSDN上记录的Windows API。例如,为“GetClipboardData”获取源代码会将结果返回到两个文件中:

qclipboard_win.cpp:

#if defined(Q_OS_WINCE)
...
HANDLE clipData = GetClipboardData(CF_TEXT)

qaxserverbase.cpp:

STDMETHOD(GetClipboardData)(DWORD dwReserved, IDataObject** ppDataObject);
...
HRESULT WINAPI QAxServerBase::GetClipboardData(DWORD, IDataObject**)
{
    return E_NOTIMPL;
}

和“SetClipboardData”:

qclipboard_win.cpp:

#if defined(Q_OS_WINCE)
...
result = SetClipboardData(CF_UNICODETEXT, wcsdup(reinterpret_cast<const wchar_t *> (data->text().utf16()))) != NULL;

这些都没有用,因为它们是为Win CE / Mobile宣布的。

1 个答案:

答案 0 :(得分:3)

我的Qt(4.8.1)使用OleSetClipboardOleGetClipboard。在常规窗口中永远不会到达您所在的行,因为只有在#if defined(Q_OS_WINCE) Qt使用#define OleSetClipboard QtCeSetClipboard#define OleGetClipboard QtCeGetClipboard的情况下,否则使用系统提供的这些函数版本。

虽然看到这个#if defined有点困难,所以你可以原谅;)

至少在我的Qt版本上如此。如果你在谈论qt,特别是关于它的内部,你应该提到版本,对吗?