Introduction
There is no
custom hook
function,
just common
MFC
message
maps. The
dialog has a
CDibStatic
member,
which
displays the
preview
image when
available.
The
CDibStatic
class
encapsulates
a static
control that
displays
images and
is described
in an
article in
the static
controls
section.
This is how
the
dialog
looks like:
The template
for the
dialog is a
normal
developer
studio
dialog
template.
Note
however, the
use of the
stc32
static
control. As
it hasn't
any text in
it, it is
invisible
unless you
select it.
This static
control will
serve as a
place holder
for the
standard
file dialog
controls,
thus
establishing
the position
of the newly
added
controls in
respect to
the
standards.
If there is
no
stc32
control
specified in
the
template,
all the new
controls
will be
placed below
the standard
controls.
Otherwise,
the common
file dialog
will look at
the size of
the
stc32
control to
attempt to
fit all the
standard
controls in
it. If it is
not big
enough, it
is resized
to make room
for the
standard
controls,
and then the
new controls
are
repositioned
with respect
to the
resized
stc32
control.
Palette
support is
included
within the
dialog
class. It is
implemented
using
handlers for
the
WM_QUERYNEWPALETTE
and
WM_PALETTECHANGED
Windows
messages, so
you have to
ensure in
your program
that the
dialog
receives
these
messages. If
the palette
never
changes, the
image is
painted with
the right
palette
selected the
first time.
Since the
standard
dialogs are
modal, the
palette
changes can
be due only
to other
applications
(unless you
change it in
another
thread),
thus
realizing
palette when
gaining
focus should
always
maintain the
right
colors. You
can realize
the palette
at any time
you wish by
sending a
WM_QUERYNEWPALETTE
message to
the
CDibStatic
control, for
instance.
This class
has been
used (among
other
things) to
implement a
completely
object
oriented
DIBLOOK.