This is the idea.
Create a dialog and store the handle.
Add a form to the project and place a picturebox in there.
Use MoveWindow to streach the dialog.
Use setparent to set the parent of the picturebox in the form to the dialog.
Use movewindow to place the picture box to where you need in the dialog. (Note you can add as many controls and place it in the extended area. A flexgrid, listbox, richtextbox to preview textfiles and docs..)
Subclass these messages.
WM_DESTROY = &H2
WM_NOTIFY = &H4E
WM_NCDESTROY = &H82
WM_GETDLGCODE = &H87
WM_INITDIALOG = &H110
WM_COMMAND = &H111
CDN_INITDONE = (CDN_FIRST - &H0)
CDN_SELCHANGE = (CDN_FIRST - &H1)
CDN_FOLDERCHANGE = (CDN_FIRST - &H2)
CDN_SHAREVIOLATION = (CDN_FIRST - &H3)
CDN_HELP = (CDN_FIRST - &H4)
CDN_FILEOK = (CDN_FIRST - &H5)
CDN_TYPECHANGE = (CDN_FIRST - &H6)
CDN_INCLUDEITEM = (CDN_FIRST - &H7)
When ever you get a CDN_SELCHANGE message, you can show the picture preview by loading the picturefile in to the picturebox. Changed filename can be selected by using GetComDlgFileName API.
This the logic. The actual programming is left to interested readers.