Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qwindowsole.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QWINDOWSOLE_H
5#define QWINDOWSOLE_H
6
7#include <QtCore/qt_windows.h>
8
9#include <QtCore/qlist.h>
10#include <QtCore/qmap.h>
11#include <QtCore/qpointer.h>
12#include <QtCore/private/qcomobject_p.h>
13
14#include <objidl.h>
15
17
18class QMimeData;
19class QWindow;
20
22{
23public:
24 explicit QWindowsOleDataObject(QMimeData *mimeData);
26
27 void releaseQt();
28 QMimeData *mimeData() const;
30
31 // IDataObject methods
32 STDMETHOD(GetData)(LPFORMATETC pformatetcIn, LPSTGMEDIUM pmedium) noexcept override;
33 STDMETHOD(GetDataHere)(LPFORMATETC pformatetc, LPSTGMEDIUM pmedium) noexcept override;
34 STDMETHOD(QueryGetData)(LPFORMATETC pformatetc) noexcept override;
35 STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC pformatetc, LPFORMATETC pformatetcOut) noexcept override;
36 STDMETHOD(SetData)(LPFORMATETC pformatetc, STGMEDIUM FAR *pmedium, BOOL fRelease) noexcept override;
37 STDMETHOD(EnumFormatEtc)(DWORD dwDirection, LPENUMFORMATETC FAR *ppenumFormatEtc) noexcept override;
40 DWORD FAR *pdwConnection) noexcept override;
41 STDMETHOD(DUnadvise)(DWORD dwConnection) noexcept override;
42 STDMETHOD(EnumDAdvise)(LPENUMSTATDATA FAR *ppenumAdvise) noexcept override;
43
44private:
45 QPointer<QMimeData> data;
46 const int CF_PERFORMEDDROPEFFECT;
47 DWORD performedEffect = DROPEFFECT_NONE;
48};
49
51{
52public:
53 explicit QWindowsOleEnumFmtEtc(const QList<FORMATETC> &fmtetcs);
54 explicit QWindowsOleEnumFmtEtc(const QList<LPFORMATETC> &lpfmtetcs);
56
57 bool isNull() const;
58
59 // IEnumFORMATETC methods
60 STDMETHOD(Next)(ULONG celt, LPFORMATETC rgelt, ULONG FAR *pceltFetched) noexcept override;
61 STDMETHOD(Skip)(ULONG celt) noexcept override;
62 STDMETHOD(Reset)(void) noexcept override;
63 STDMETHOD(Clone)(LPENUMFORMATETC FAR *newEnum) noexcept override;
64
65private:
66 bool copyFormatEtc(LPFORMATETC dest, const FORMATETC *src) const;
67
68 ULONG m_nIndex = 0;
69 QList<LPFORMATETC> m_lpfmtetcs;
70 bool m_isNull = false;
71};
72
73QT_END_NAMESPACE
74
75#endif // QWINDOWSOLE_H
Special mime data class managing delayed retrieval of clipboard data.
void releaseDataObject(IDataObject *) const override
IDataObject * retrieveDataObject() const override
Clipboard implementation.
void setMimeData(QMimeData *data, QClipboard::Mode mode=QClipboard::Clipboard) override
bool supportsMode(QClipboard::Mode mode) const override
QMimeData * mimeData(QClipboard::Mode mode=QClipboard::Clipboard) override
bool ownsMode(QClipboard::Mode mode) const override
static QWindowsClipboard * instance()
HWND clipboardViewer() const
bool clipboardViewerWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT *result)
Windows procedure of the clipboard viewer.
bool hasFormat_sys(const QString &mimetype) const override
virtual IDataObject * retrieveDataObject() const =0
virtual void releaseDataObject(IDataObject *) const
QVariant retrieveData_sys(const QString &mimetype, QMetaType preferredType) const override
QStringList formats_sys() const override
OLE data container.
Definition qwindowsole.h:22
STDMETHOD GetDataHere(LPFORMATETC pformatetc, LPSTGMEDIUM pmedium) noexcept override
~QWindowsOleDataObject() override
FORMATETC FAR * pFormatetc
Definition qwindowsole.h:39
STDMETHOD QueryGetData(LPFORMATETC pformatetc) noexcept override
STDMETHOD SetData(LPFORMATETC pformatetc, STGMEDIUM FAR *pmedium, BOOL fRelease) noexcept override
STDMETHOD DUnadvise(DWORD dwConnection) noexcept override
QWindowsOleDataObject(QMimeData *mimeData)
QMimeData * mimeData() const
STDMETHOD EnumDAdvise(LPENUMSTATDATA FAR *ppenumAdvise) noexcept override
STDMETHOD EnumFormatEtc(DWORD dwDirection, LPENUMFORMATETC FAR *ppenumFormatEtc) noexcept override
DWORD reportedPerformedEffect() const
STDMETHOD GetCanonicalFormatEtc(LPFORMATETC pformatetc, LPFORMATETC pformatetcOut) noexcept override
STDMETHOD GetData(LPFORMATETC pformatetcIn, LPSTGMEDIUM pmedium) noexcept override
Enumerates the FORMATETC structures supported by QWindowsOleDataObject.
Definition qwindowsole.h:51
~QWindowsOleEnumFmtEtc() override
STDMETHOD Skip(ULONG celt) noexcept override
STDMETHOD Reset(void) noexcept override
STDMETHOD Next(ULONG celt, LPFORMATETC rgelt, ULONG FAR *pceltFetched) noexcept override
STDMETHOD Clone(LPENUMFORMATETC FAR *newEnum) noexcept override
QWindowsOleEnumFmtEtc(const QList< FORMATETC > &fmtetcs)
static bool isProcessBeingDebugged(HWND hwnd)
static void cleanClipboardPostRoutine()