|
General OLE Concepts
One of the most attractive aspects of OLE is that it is completely modular. It
is designed so that each component can exist, for the most part, on its own.
For example, you can add drag and drop support to your application without
adding in-place activation, automation, or compound storage.
Even if your application only uses a small part of OLE, the Component Object
Model (COM) enables other applications to know what your application's OLE
capabilities are. COM is the fundamental, underlying model that OLE is based upon;
all OLE objects are also component objects.
COM stipulates that any component object must control its own life span and be
able to tell other objects about its capabilities in a strictly defined
manner. To control its life span, a component object maintains a reference count.
Capabilities are grouped into logical sets called interfaces; each interface is a
set of member functions necessary to support a certain capability. The
"strictly defined manner" that component objects must use is itself an interface, which
is called IUnknown. Because all OLE interfaces are derived from IUnknown, they are component objects. IUnknown has three member functions: QueryInterface, AddRef, and Release.
An object uses QueryInterface to tell other objects about its capabilities. If the object implements the
requested interface, it returns a pointer to the interface. If it does not
implement it, it returns the E_NOTIMPL error value stating that the object does not
support the requested interface. AddRef and Release are used to control the object's life span. An object's AddRef member function is called when another object holds a pointer to the object,
and the Release member function is called when the pointer is no longer needed. If a call to Release causes the object's reference count to go to zero, the object can safely
unload itself.
COM provides a couple of immediate benefits:
- An object can determine in advance if another object supports a certain
feature. If the other object does not support the feature, the calling object can
react accordingly.
- Objects do not remain in memory longer (or shorter) than necessary, and they
do not rely on the user to launch or close them.
The OLE data transfer mechanism is a crucial element of drag and drop support.
Data transfer in OLE allows objects to be very specific about the data that
they transfer. Instead of simply being able to transfer a plain old bitmap, an
object can now transfer a bitmap of the object's contents rendered for a printer
device and stored in a stream to be released by OLE.
To accomplish this, OLE uses the IDataObject interface and the FORMATETC and STGMEDIUM structures. Applications implement IDataObject to accomplish all data transfer in OLE; it includes member functions that set
and retrieve an object's data, enumerate the available data formats, and
receive data change notifications. FORMATETC and STGMEDIUM provide the specific details about the data that is being transferred that is, the target device, aspect, storage medium, and release method.
Every drag and drop operation involves two objects: a source and a target. The
source object contains the data to be dragged, and the target object accepts
the dragged data.
| Last news from Greatis Software |
 |
|
Nostalgia .Net |
|
.Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes. More » |
| Recommended software for developers |
 |
|
Ultimate Pack |
|
Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price. More » |
 |
|
Form Designer .Net |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro! More » |
 |
|
Print Suite .Net |
|
Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available More » |
 |
|
Gradient Controls .Net |
|
Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
Greatis iGrid |
|
iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors. More » |
All the contacts and projectsDmitry Vasiliev (just.dmitry)
Related LinksSoftware for Visual Studio .NET developers Software for Delphi and C++ Builder developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference Win32 Multimedia Programmer's Reference OLE Programmer's Reference Microsoft Windows Pen API Programmer's Reference Microsoft Windows Sockets 2 Reference Microsoft Windows Telephony API (TAPI) Programmer's Reference Unix Manual Pages
|