WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

COMCONTROL
plus
plus

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Using Windows Explorer Shell in a Dialog Com Control

 Keywords: ShellFolderView Object Windows Explorer Shell in a Dialog COM Control COMCONTROL Explore Browse Thumbnail

Question:

I have to sort my slides, which are scanned. I want to select a jpg-file in a windows-dialog, which shows thumbnails.

Answer:

The trick is to pass the file path to a COMCONTROL in a dialog. then capture the selected file name in a Dialog Callback procedure. objFolderItem = oShell.Document.FocusedItem returns a Folder object then use the name property to grab the selected file name.

reference: http://msdn.microsoft.com/en-us/library/bb774049(VS.85).aspx

;============================================================
;============================================================
;============================================================




#DefineSubRoutine InitDialogConstants()
   ;DialogprocOptions Constants
   MSG_INIT=0                ; The one-time initialization
   MSG_TIMER=1               ; Timer event
   MSG_BUTTONPUSHED=2        ; Pushbutton or Picturebutton
   MSG_RADIOPUSHED=3         ; Radiobutton clicked
   MSG_CHECKBOX=4            ; Checkbox clicked
   MSG_EDITBOX=5             ; Editbox or Multilinebox
   MSG_FILESELECT=6          ; Filelistbox
   MSG_ITEMSELECT=7          ; Itembox
   MSG_COMBOCHANGE=8         ; Combobox/Droplistbox
   MSG_CALENDAR=9            ; Calendar date change
   MSG_SPINNER=10            ; Spinner number change
   MSG_CLOSEVIA49=11         ; Close clicked (Enabled via DialogProcOptions 1002
   MSG_FILEBOXDOUBLECLICK=12 ; Get double-click message on a FileListBox
   MSG_ITEMBOXDOUBLECLICK=13 ; Get double-click message on an ItemBox
   MSG_COMEVENT=14           ; COMCONTROL Event notification from DialogObject (NOT DialogProcOptions)

   DPO_DISABLESTATE=1000     ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog
   DPO_CHANGEBACKGROUND=1001 ; -1=Get Current otherise bitmap or color string
   DPO_CHANGESYSMENU=1002    ; -1=Get Current 0=none 1=close 2=close/min 3=close/max 4=close/min/max 
   DPO_CHANGETITLE=1003      ; Set/Get Dialog Title - (-1 to get) 

   ;DialogControlState Constants
   DCSTATE_SETFOCUS=1        ; Give Control Focus
   DCSTATE_QUERYSTYLE=2      ; Query control's style
   DCSTATE_ADDSTYLE=3        ; Add control style
   DCSTATE_REMOVESTYLE=4     ; Remove control style
   DCSTATE_GETFOCUS=5        ; Get control that has focus
   DCSTATE_MOVEMOUSEOVER=6   ; Move the mouse over the control

   DCSTYLE_INVISIBLE=1       ; Set Control Invisible
   DCSTYLE_DISABLED=2        ; Set Control Disabled
   DCSTYLE_NOUSERDATA=4      ; Note: Setable via DialogControlState function ONLY SPINNER control only
   DCSTYLE_READONLY=8        ; Sets control to read-only (user cannot type in data) EDITBOX MULTILINEBOX SPINNER
   DCSTYLE_PASSWORD=16       ; Sets 'password mode' where only *'s are displayed EDITBOX
   DCSTYLE_DEFAULTBUTTON=32  ; Sets a button as the default button PUSHBUTTON PICTUREBUTTON
   DCSTYLE_DIGITSONLY=64     ; Set edit box to accept digits only EDITMOX MULTILINEBOX
   DCSTYLE_FLAT=128          ; Makes a 'flat' hyperlink-looking button PUSHBUTTON PICTUREBUTTON
   DCSTYLE_NOADJUST=256      ; Turns off auto-height adjustment  ITEMBOX FILELISTBOX
   DCSTYLE_TEXTCENTER=512    ; Center text in control VARYTEXT STATICTEXT
   DCSTYLE_TEXTRIGHT=1024    ; Flush-Right text in control VARYTEXT STATICTEXT
   DCSTYLE_NOSELCURLEFT=2048 ; No selection, cursor left EDITBOX MULTILINEBOX
   DCSTYLE_NOSELCURRIGHT=4096; No selection, cursor right EDITBOX MULTILINEBOX

   ;DialogControlSet / DialogControlGet Constants
   DC_CHECKBOX=1             ; CHECKBOX
   DC_RADIOBUTTON=2          ; RADIOBUTTON
   DC_EDITBOX=3              ; EDITBOX MULTILINEBOX
   DC_TITLE=4                ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON
   DC_ITEMBOXCONTENTS=5      ; ITEMBOX FILELISTBOX DROPLISTBOX
   DC_ITEMBOXSELECT=6        ; ITEMBOX FILELISTBOX DROPLISTBOX
   DC_CALENDAR=7             ; CALENDAR
   DC_SPINNER=8              ; SPINNER
   DC_MULTITABSTOPS=9        ; MULTILINEBOX
   DC_ITEMSCROLLPOS=10       ; ITEMBOX FILELISTBOX
   DC_BACKGROUNDCOLOR=11     ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX
   DC_PICTUREBITMAP=12       ; PICTURE PICTUREBUTTON
   DC_TEXTCOLOR=13           ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FIELLISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX
   DC_ITEMBOXADD=14          ; ITEMBOX FILELISTBOX DROPLISTBOX
   DC_ITEMBOXREMOVE=15       ; ITEMBOX FILELISTBOX DROPLISTBOX
   DC_RADIOVALUE=16          ; RADIOBUTTON


   ;DialogObject constants
   DLGOBJECT_ADDEVENT=1      ; Call dialog callback when the specified event occurs
   DLGOBJECT_STOPEVENT=2     ; Stop calling dialog callback when an event previously requested with
   DLGOBJECT_GETOBJECT=3     ; Return an object references to the specified control
   DLGOBJECT_GETPICTURE=4    ; Create and return an object reference to a picture object

   ;Return code constants
   RET_DO_CANCEL=0           ; Cancels dialog
   RET_DO_DEFAULT= -1        ; Continue with default processing for control
   RET_DO_NOT_EXIT= -2       ; Do not exit the dialog
   return
#EndSubroutine
;============================================================
;============================================================
;============================================================




#DefineSubRoutine ExamCallbackProc(Exam_Handle,Exam_Message,Exam_ID,Exam_EventInfo,rsvd)
   InitDialogConstants()                                    ; Initialize Dialog Constants
   switch Exam_Message                                      ; Switch based on Dialog Message type
      case MSG_INIT                                         ; Standard Initialization message
;         DialogProcOptions(Exam_Handle,MSG_TIMER,1000)
         DialogProcOptions(Exam_Handle,MSG_BUTTONPUSHED,@TRUE)
;         DialogObject(Exam_Handle,001,DLGOBJECT_ADDEVENT,"ComEventName",1000)


         return(RET_DO_DEFAULT)

     case MSG_BUTTONPUSHED
        switch Exam_ID
           case 002                                        ; ID 002  OK
				 oShell = DialogObject(Exam_Handle,1,3) ;creates our variable
				 ;reference: http://msdn.microsoft.com/en-us/library/bb774049(VS.85).aspx
				 objFolderItem  = oShell.Document.FocusedItem
				 selectedfile = objFolderItem.Name
				 ;Message("User Selected", selectedfile )
             return(RET_DO_DEFAULT)

           case 003                                        ; ID 003  Cancel
              return(RET_DO_CANCEL)

       endswitch                                          ; Exam_ID
        return(RET_DO_DEFAULT)

   endswitch                                                ; Exam_Message
   return(RET_DO_DEFAULT)
#EndSubRoutine                                                ; End of Dialog Callback ExamCallbackProc

;============================================================
;============================================================
;============================================================



ExamFormat=`WWWDLGED,6.1`

ExamCaption=`AskItemList Example`
ExamX=150
ExamY=058
ExamWidth=200
ExamHeight=177
ExamNumControls=003
ExamProcedure=`ExamCallbackProc`
ExamFont=`DEFAULT`
ExamTextColor=`DEFAULT`
ExamBackground=`DEFAULT,DEFAULT`
ExamConfig=0

Exam001=`009,003,178,144,COMCONTROL,DEFAULT,"file://c:/test/",DEFAULT,1,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
Exam002=`021,153,060,012,PUSHBUTTON,DEFAULT,"OK",1,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
Exam003=`107,153,058,012,PUSHBUTTON,DEFAULT,"Cancel",2,3,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
Dialog("Exam")

Message("User Selected", selectedfile )
Exit

Article ID:   W17706
Filename:   Using Windows Explorer Shell in a Dialog Com Control.txt
File Created: 2008:08:12:10:22:48
Last Updated: 2008:08:12:10:22:48