// Copyright (c) 1997-1999 Microsoft Corporation // // class Extractor // // 11-12-97 sburns #ifndef EXTRACT_HPP_INCLUDED #define EXTRACT_HPP_INCLUDED // Extractor encapsulates clipboard extraction buffers, allocating and // initializing them upon construction, deallocating them upon deletion. By // keeping a single (static) instance of an Extractor around, one can avoid // allocation/deallocation for each extraction operation, and be assured that // cleanup occurs properly. class Extractor { protected: // Creates a new instance. Declared protected so as to function only // as a base class. // // clipFormatID - clipboard format ID returned from Win // RegisterClipboardFormat. // // bufSize - the buffer size, in bytes, required to extract the data in the // clipboard format expressed by the clipFormatID parameter. Extractor(CLIPFORMAT clipFormatID, size_t bufSize); virtual ~Extractor(); // Calls GetDataHere on the data object, returning a pointer to the buffer // if the call was successful, or 0 if the call failed. The invoker should // NOT free the returned HGLOBAL, as this is managed by the object. // // dataObject - the data object from which the clipboard data should be // extracted. HGLOBAL ExtractData(IDataObject& dataObject); private: // not implemented: no copying allowed Extractor(const Extractor&); const Extractor& operator=(const Extractor&); FORMATETC formatetc; STGMEDIUM stgmedium; size_t bufSize; }; #endif // EXTRACT_HPP_INCLUDED