summaryrefslogblamecommitdiffstats
path: root/private/oleutest/simpdnd/readme.txt
blob: afcca0b6c20219a4b6274e2e6fda3d5307fee802 (plain) (tree)














































                                                                              
Simple Drag and Drop Sample
---------------------------

This sample demonstrates an implementation of OLE 2 drag and drop. It allows
drag and drop operations between two instances of the sample application.
For information on compiling and building the sample, see the makefile in
this directory.


Simple Drag and Drop Objects Overview :
---------------------------------------
Simple Drag and Drop consists of three main objects. The top level is
CSimpleApp, under which is CSimpleDoc, and the innermost level is CSimpleSite.
CSimpleApp is used to hold all the main window information. (eg. handle to
the main window, handles to the main, edit, and help menus and the application
instance) CSimpleApp always exists as long as the simple drag and drop
application is alive.

The next level object is CSimpleDoc object. It is instantiated when a new
document is created. It enables and disables the menu items in the main menu.
Since simple drag and drop is a single document interface application, the
user is only allowed to insert one object into the document. It is
necessary to disable certain items from the main menu to avoid incorrect
selection. It also registers the window for drag and drop and manipulates
the clipboard operations, such as copy to the clipboard, flush the clipboard.
It demonstrates the implementates of two OLE interfaces in its nested classes,
IDropSource and IDropTarget. These two interfaces are implemented as
CDropSource and CDropTarget respectively.

The CSimpleDoc object instantiates two different objects based on the user
selection from the main menu. The CSimpleSite object is instantiated if the
user chooses to insert a new object into the document. CSimpleSite
demonstrates the implementation of IAdviseSink and IOleClientSite through its
nested classes. These two interfaces are implemented as CAdviseSink and
COleClientSite accordingly. CSimpleSite manipulates the storage handling and
acts as a client site to communicate to a remote server. Such server can be
an executable server or a dll server. The CDataXferObj object is instantiated
when the user chooses to copy the existing object from the current document.
it is required to copy an object to the clipboard. CDataXferObj demonstrates
the IDataObject interface implementation and performs data transfer
operations.