1

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

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。

4

1 回答 1

3

我的 Qt (4.8.1) 使用OleSetClipboardOleGetClipboard。在常规窗口中永远无法达到您要达到的行,仅在#if defined(Q_OS_WINCE)Qt 使用#define OleSetClipboard QtCeSetClipboardand的情况下#define OleGetClipboard QtCeGetClipboard,否则使用系统提供的这些功能的版本。

不过看到这一点有点困难#if defined,所以请原谅;)

至少在我的 Qt 版本上是如此。如果您在谈论 qt,尤其是关于它的内部结构,您应该提及版本,对吗?

于 2012-05-26T02:27:22.147 回答