You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
65 lines
1.6 KiB
// 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
|
|
|
|
|
|
|
|
|