2012-05-26 47 views
1

我一直在浏览试图查找实际系统调用的Qt源代码,但似乎Qt并未使用MSDN上记录的Windows API。例如grepping来源为 “GetClipboardData” 返回结果中的两个文件:Qt使用什么API与Windows剪贴板进行交互?

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宣布的。

回答

3

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

这是一个小难治看到这个#if defined虽然,所以你原谅;)

它是如此,至少在我的Qt版本。如果你正在谈论qt,特别是关于它的内部,你应该试一下版本,对吧?