1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_DTRANS_SOURCE_WIN32_WORKBENCH_XTDO_HXX
21 #define INCLUDED_DTRANS_SOURCE_WIN32_WORKBENCH_XTDO_HXX
24 #pragma warning(push,1)
37 /*--------------------------------------------------------------------------
38 - the function principle of the windows clipboard:
39 a data provider offers all formats he can deliver on the clipboard
40 a clipboard client ask for the available formats on the clipboard
41 and decides if there is a format he can use
42 if there is one, he requests the data in this format
44 - This class inherits from IDataObject and so can be placed on the
45 OleClipboard. The class wraps a transferable object which is the
47 - DataFlavors offered by this transferable will be translated into
48 appropriate clipboard formats
49 - if the transferable contains text data always text and unicodetext
50 will be offered or vice versa
51 - text data will be automatically converted between text and unicode text
52 - although the transferable may support text in different charsets
53 (codepages) only text in one codepage can be offered by the clipboard
55 ----------------------------------------------------------------------------*/
57 class CXTDataObject
: public IDataObject
62 // ole interface implementation
64 //IUnknown interface methods
65 STDMETHODIMP
QueryInterface(REFIID iid
, LPVOID
* ppvObject
);
66 STDMETHODIMP_( ULONG
) AddRef( );
67 STDMETHODIMP_( ULONG
) Release( );
69 // IDataObject interface methods
70 STDMETHODIMP
GetData( LPFORMATETC pFormatetc
, LPSTGMEDIUM pmedium
);
71 STDMETHODIMP
GetDataHere( LPFORMATETC pFormatetc
, LPSTGMEDIUM pmedium
);
72 STDMETHODIMP
QueryGetData( LPFORMATETC pFormatetc
);
73 STDMETHODIMP
GetCanonicalFormatEtc( LPFORMATETC pFormatectIn
, LPFORMATETC pFormatetcOut
);
74 STDMETHODIMP
SetData( LPFORMATETC pFormatetc
, LPSTGMEDIUM pmedium
, BOOL fRelease
);
75 STDMETHODIMP
EnumFormatEtc( DWORD dwDirection
, IEnumFORMATETC
** ppenumFormatetc
);
76 STDMETHODIMP
DAdvise( LPFORMATETC pFormatetc
, DWORD advf
, LPADVISESINK pAdvSink
, DWORD
* pdwConnection
);
77 STDMETHODIMP
DUnadvise( DWORD dwConnection
);
78 STDMETHODIMP
EnumDAdvise( LPENUMSTATDATA
* ppenumAdvise
);
80 operator IDataObject
*( );
88 class CEnumFormatEtc
: public IEnumFORMATETC
91 explicit CEnumFormatEtc( LPUNKNOWN pUnkDataObj
);
94 STDMETHODIMP
QueryInterface( REFIID iid
, LPVOID
* ppvObject
);
95 STDMETHODIMP_( ULONG
) AddRef( );
96 STDMETHODIMP_( ULONG
) Release( );
99 STDMETHODIMP
Next( ULONG celt
, LPFORMATETC rgelt
, ULONG
* pceltFetched
);
100 STDMETHODIMP
Skip( ULONG celt
);
101 STDMETHODIMP
Reset( );
102 STDMETHODIMP
Clone( IEnumFORMATETC
** ppenum
);
106 LPUNKNOWN m_pUnkDataObj
;
110 typedef CEnumFormatEtc
*PCEnumFormatEtc
;
114 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */