2012-05-26 80 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,特別是關於它的內部,你應該試一下版本,對吧?