git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1698 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			89 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
\section{\class{wxDataObject}}\label{wxdataobject}
 | 
						|
 | 
						|
A wxDataObject represents data that can be copied to or from the clipboard, or
 | 
						|
dragged and dropped.
 | 
						|
 | 
						|
There are several predefined data object classes, such as \helpref{wxFileDataObject}{wxfiledataobject}, 
 | 
						|
\helpref{wxTextDataObject}{wxtextdataobject}, and \helpref{wxBitmapDataObject}{wxbitmapdataobject} which
 | 
						|
can be used without change or can be altered (by deriving a new class from them) in order to deliver
 | 
						|
data and data size on-demand. There is no need to ever use wxDataObject itself or derive directly from it.
 | 
						|
 | 
						|
You may also derive your own data object classes from \helpref{wxPrivateDataObject}{wxprivatedataobject}
 | 
						|
for user-defined types. The format of user-defined data is given as mime-type string literal, 
 | 
						|
such as "application/word" or "image/png". These strings are used as they are under Unix (so 
 | 
						|
far only GTK) to identify a format and are translated into their Windows equivalent under 
 | 
						|
Win32 (using the OLE IDataObject for data exchange to and from the clipboard and for Drag'n'Drop).
 | 
						|
Note that the format string translation under Windows is not yet finnished.
 | 
						|
 | 
						|
As mentioned above, data may be placed into the \helpref{wxClipboard}{wxclipboard}
 | 
						|
or a \helpref{wxDropSource}{wxdropsource} instance either directly or on-demand. 
 | 
						|
As long as only one format is offerred, putting data directly into the clipboard may 
 | 
						|
be sufficient. But imagine that you paste a large piece of text to the clipboard and 
 | 
						|
offer it in "text/plain", "text/rtf", "text/html", "application/word" and your own 
 | 
						|
format for internal use - here offering data on-demand is required to minimize memory 
 | 
						|
consumption. This would generally get implemented using a central object that
 | 
						|
contains clipboard information in the format with the maximum of information. Note
 | 
						|
that neither the GTK data transfer mechanisms for the clipboard and Drag'n'Drop
 | 
						|
nor the OLE data transfer copies any data until another application actually
 | 
						|
requests the data. This is in contrast to the "feel" offered to the user of a
 | 
						|
program who would normally think that the data resides in the clipboard after
 | 
						|
having pressed "Copy" - in reality it is only declared to be available.
 | 
						|
 | 
						|
Let's assume that you have written an HTML editor and want it to paste contents
 | 
						|
in the formats "text/plain" and "text/html" to the clipboard. For offering
 | 
						|
data on-demand in "text/plain" you would derive your class from \helpref{wxTextDataObject}{wxtextdataobject}
 | 
						|
and for offering data on-demand in "text/html" you would derive your own class from
 | 
						|
\helpref{wxPrivateDataObject}{wxprivatedataobject} and set its ID string
 | 
						|
identifying the format to "text/html" using \helpref{wxPrivateDataObject::SetId}{wxprivatedataobjectsetid}.
 | 
						|
In your two derived classed you'd then have a pointer or reference to the central
 | 
						|
data container and you'd override the methods returning the size of the
 | 
						|
available data and the WriteData() methods in both classes.
 | 
						|
 | 
						|
\wxheading{Derived from}
 | 
						|
 | 
						|
\helpref{wxObject}{wxobject}
 | 
						|
 | 
						|
\wxheading{Include files}
 | 
						|
 | 
						|
<wx/dataobj.h>
 | 
						|
 | 
						|
\wxheading{See also}
 | 
						|
 | 
						|
\helpref{wxFileDataObject}{wxfiledataobject}, 
 | 
						|
\helpref{wxTextDataObject}{wxtextdataobject}, 
 | 
						|
\helpref{wxBitmapDataObject}{wxbitmapdataobject}, 
 | 
						|
\helpref{wxPrivateDataObject}{wxprivatedataobject}, 
 | 
						|
\helpref{Drag and drop overview}{wxdndoverview}, \helpref{wxDropTarget}{wxdroptarget}, 
 | 
						|
\helpref{wxDropSource}{wxdropsource}, 
 | 
						|
\helpref{wxTextDropTarget}{wxtextdroptarget}, \helpref{wxFileDropTarget}{wxfiledroptarget}
 | 
						|
 | 
						|
\latexignore{\rtfignore{\wxheading{Members}}}
 | 
						|
 | 
						|
\membersection{wxDataObject::wxDataObject}\label{wxdataobjectwxdataobject}
 | 
						|
 | 
						|
\func{}{wxDataObject}{\void}
 | 
						|
 | 
						|
Constructor.
 | 
						|
 | 
						|
\membersection{wxDataObject::\destruct{wxDataObject}}\label{wxdataobjectdtor}
 | 
						|
 | 
						|
\func{}{\destruct{wxDataObject}}{\void}
 | 
						|
 | 
						|
Destructor.
 | 
						|
 | 
						|
\membersection{wxDataObject::WriteData}\label{wxdataobjectwritedata}
 | 
						|
 | 
						|
\constfunc{virtual void}{WriteData}{\param{void}{*dest} }
 | 
						|
 | 
						|
Write the data owned by this class to {\it dest}. This method is a pure
 | 
						|
virtual function and must be overridden.
 | 
						|
 | 
						|
\membersection{wxDataObject::GetSize}\label{wxdataobjectgetdatasize}
 | 
						|
 | 
						|
\constfunc{virtual size\_t}{GetSize}{\void}
 | 
						|
 | 
						|
Returns the data size. This method is a pure
 | 
						|
virtual function and must be overridden.
 | 
						|
 | 
						|
 |