我一直在浏览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宣布的。
答案 0 :(得分:3)
我的Qt(4.8.1)使用OleSetClipboard和OleGetClipboard。在常规窗口中永远不会到达您所在的行,因为只有在#if defined(Q_OS_WINCE)
Qt使用#define OleSetClipboard QtCeSetClipboard
和#define OleGetClipboard QtCeGetClipboard
的情况下,否则使用系统提供的这些函数版本。
虽然看到这个#if defined
有点困难,所以你可以原谅;)
至少在我的Qt版本上如此。如果你在谈论qt,特别是关于它的内部,你应该提到版本,对吗?