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// Qt-Security score:significant reason:default
4
5#ifndef QWINDOWSOLE_H
6#define QWINDOWSOLE_H
7
8#include <QtCore/qt_windows.h>
9
10#include <QtCore/qlist.h>
11#include <QtCore/qmap.h>
12#include <QtCore/qpointer.h>
13#include <QtCore/private/qcomobject_p.h>
14
15#include <objidl.h>
16
18
19class QMimeData;
20class QWindow;
21
23{
24public:
25 explicit QWindowsOleDataObject(QMimeData *mimeData);
27
28 void releaseQt();
29 QMimeData *mimeData() const;
31
32 // IDataObject methods
33 STDMETHOD(GetData)(LPFORMATETC pformatetcIn, LPSTGMEDIUM pmedium) noexcept override;
34 STDMETHOD(GetDataHere)(LPFORMATETC pformatetc, LPSTGMEDIUM pmedium) noexcept override;
35 STDMETHOD(QueryGetData)(LPFORMATETC pformatetc) noexcept override;
36 STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC pformatetc, LPFORMATETC pformatetcOut) noexcept override;
37 STDMETHOD(SetData)(LPFORMATETC pformatetc, STGMEDIUM FAR *pmedium, BOOL fRelease) noexcept override;
38 STDMETHOD(EnumFormatEtc)(DWORD dwDirection, LPENUMFORMATETC FAR *ppenumFormatEtc) noexcept override;
41 DWORD FAR *pdwConnection) noexcept override;
42 STDMETHOD(DUnadvise)(DWORD dwConnection) noexcept override;
43 STDMETHOD(EnumDAdvise)(LPENUMSTATDATA FAR *ppenumAdvise) noexcept override;
44
45private:
46 QPointer<QMimeData> data;
47 const int CF_PERFORMEDDROPEFFECT;
48 DWORD performedEffect = DROPEFFECT_NONE;
49};
50
52{
53public:
54 explicit QWindowsOleEnumFmtEtc(const QList<FORMATETC> &fmtetcs);
55 explicit QWindowsOleEnumFmtEtc(const QList<LPFORMATETC> &lpfmtetcs);
57
58 bool isNull() const;
59
60 // IEnumFORMATETC methods
61 STDMETHOD(Next)(ULONG celt, LPFORMATETC rgelt, ULONG FAR *pceltFetched) noexcept override;
62 STDMETHOD(Skip)(ULONG celt) noexcept override;
63 STDMETHOD(Reset)(void) noexcept override;
64 STDMETHOD(Clone)(LPENUMFORMATETC FAR *newEnum) noexcept override;
65
66private:
67 bool copyFormatEtc(LPFORMATETC dest, const FORMATETC *src) const;
68
69 ULONG m_nIndex = 0;
70 QList<LPFORMATETC> m_lpfmtetcs;
71 bool m_isNull = false;
72};
73
74QT_END_NAMESPACE
75
76#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.
Singleton container for all relevant information.
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:23
STDMETHOD GetDataHere(LPFORMATETC pformatetc, LPSTGMEDIUM pmedium) noexcept override
~QWindowsOleDataObject() override
FORMATETC FAR * pFormatetc
Definition qwindowsole.h:40
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:52
~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)
Combined button and popup list for selecting options.
static bool isProcessBeingDebugged(HWND hwnd)
static void cleanClipboardPostRoutine()