Chapter 8. Data Handlers
Data handlers allow you to define
custom handling for copy-and-paste operations involving files of a
given type. Normally, when you select a file and press Ctrl-C or
select Copy from the Explorer menu, the shell copies the name of the
file using the CF_HDROP
format. This is evident in
the clsDropFiles class that we used to implement the
IShellExtInit::Initialize
and
IDropTarget::Drop
methods in Chapter 7. But what if we want to change this behavior
for our file type? Take a bitmap file for instance. What if, instead
of copying the file, we want to copy the actual image contained
within the file? Then you would be able to highlight the file in
Explorer and make it available to any program that knows how to
handle CF_BITMAP
information (Microsoft Paint,
Adobe Photoshop, etc.). Or what if we want to copy information from
the file, say in CF_TEXT
format, to the clipboard?
We might want to copy its dimensions, for example, or the color depth
of the file. This would allow us to select a file in the shell, press
Ctrl-C, and copy pertinent information directly from the file into
other programs like Microsoft Word or Excel.
Data handlers are required to implement two interfaces. These
interfaces are IPersistFile
and
IDataObject
. The IPersistFile
implementation serves the same purpose it did for our icon handler
and drop handler. We will just implement Load
to
get the name of the file in question.
We have used
IDataObject
before, but we have never implemented it. ...
Get VB Shell Programming now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.