#ifndef __CAMDLG_H_INCLUDED #define __CAMDLG_H_INCLUDED #include #include "wia.h" #include "wiadevd.h" #include "citemlst.h" #include "simarray.h" #include "bkthread.h" #include "gwiaevnt.h" #include "createtb.h" #define DEF_PICTURE_ICON 0 #define DEF_FOLDER_ICON 1 #define DEF_PARENT_ICON 2 class CCameraAcquireDialog { private: enum { MULTISEL_MODE = 1, SINGLESEL_MODE = 2, BOTH_MODES = 3 }; private: HWND m_hWnd; bool m_bPreviewActive; SIZE m_sizeMinimumWindow; SIZE m_sizeThumbnails; PDEVICEDIALOGDATA m_pDeviceDialogData; SIZE m_CurrentAspectRatio; CCameraItemList m_CameraItemList; CCameraItem *m_pCurrentParentItem; CThreadMessageQueue *m_pThreadMessageQueue; CSimpleEvent m_CancelEvent; bool m_bFirstTime; HANDLE m_hBackgroundThread; HIMAGELIST m_hImageList; HFONT m_hBigFont; DWORD m_nDialogMode; int m_nParentFolderImageListIndex; HACCEL m_hAccelTable; int m_nListViewWidth; HICON m_hIconLarge; HICON m_hIconSmall; CComPtr m_DisconnectEvent; CComPtr m_DeleteItemEvent; CComPtr m_CreateItemEvent; bool m_bTakePictureIsSupported; ToolbarHelper::CToolbarBitmapInfo m_ToolbarBitmapInfo; private: // No implementation CCameraAcquireDialog(void); CCameraAcquireDialog &operator=( const CCameraAcquireDialog & ); CCameraAcquireDialog( const CCameraAcquireDialog & ); private: CCameraAcquireDialog( HWND hWnd ); protected: HWND CreateCameraDialogToolbar(VOID); VOID ResizeAll(VOID); HRESULT EnumerateItems( CCameraItem *pCurrentParent, IEnumWiaItem *pIWiaEnumItem ); HRESULT EnumerateAllCameraItems(void); bool PopulateList( CCameraItem *pOldParent=NULL ); HBITMAP CreateDefaultThumbnail( HDC hDC, HFONT hFont, int nWidth, int nHeight, LPCWSTR pszTitle, int nType ); void CreateThumbnails( bool bForce=false ); bool FindMaximumThumbnailSize(void); int GetSelectionIndices( CSimpleDynamicArray &aIndices ); CCameraItem *GetListItemNode( int nIndex ); bool ChangeFolder( CCameraItem *pNode ); bool ChangeToSelectedFolder(void); bool IsAFolderSelected(void); bool SetSelectedListItem( int nIndex ); int FindItemInList( CCameraItem *pItem ); void RequestThumbnails( CCameraItem *pRoot ); void UpdatePreview(void); CCameraItem *GetCurrentPreviewItem(void); bool SetCurrentPreviewImage( const CSimpleString &strFilename, const CSimpleString &strTitle = TEXT("") ); LRESULT OnEnterSizeMove( WPARAM, LPARAM ); LRESULT OnExitSizeMove( WPARAM, LPARAM ); void CancelAllPreviewRequests( CCameraItem *pRoot ); void MarkItemDeletePending( int nIndex, bool bSet ); void DeleteItem( CCameraItem *pItemNode ); void HandleSelectionChange(void); void CreateThumbnails( CCameraItem *pRoot, HIMAGELIST hImageList, bool bForce ); void CreateThumbnail( CCameraItem *pCurr, HIMAGELIST hImageList, bool bForce ); void OnItemCreatedEvent( CGenericWiaEventHandler::CEventMessage *pEventMessage ); LRESULT OnInitDialog( WPARAM, LPARAM ); LRESULT OnSize( WPARAM, LPARAM ); LRESULT OnShow( WPARAM, LPARAM ); LRESULT OnGetMinMaxInfo( WPARAM, LPARAM ); LRESULT OnDestroy( WPARAM, LPARAM ); LRESULT OnDblClkImageList( WPARAM, LPARAM ); LRESULT OnImageListItemChanged( WPARAM, LPARAM ); LRESULT OnImageListKeyDown( WPARAM, LPARAM ); LRESULT OnTimer( WPARAM, LPARAM ); LRESULT OnHelp( WPARAM, LPARAM ); LRESULT OnContextMenu( WPARAM, LPARAM ); LRESULT OnSysColorChange( WPARAM, LPARAM ); LRESULT OnChangeToParent( WPARAM, LPARAM ); LRESULT OnPostInit( WPARAM, LPARAM ); LRESULT OnThumbnailStatus( WPARAM, LPARAM ); LRESULT OnPreviewStatus( WPARAM, LPARAM ); LRESULT OnPreviewPercent( WPARAM, LPARAM ); LRESULT OnItemDeleted( WPARAM, LPARAM ); LRESULT OnWiaEvent( WPARAM, LPARAM ); VOID OnParentDir( WPARAM, LPARAM ); VOID OnPreviewMode( WPARAM, LPARAM ); VOID OnIconMode( WPARAM, LPARAM ); VOID OnDelete( WPARAM, LPARAM ); VOID OnOK( WPARAM, LPARAM ); VOID OnCancel( WPARAM, LPARAM ); VOID OnProperties( WPARAM, LPARAM ); VOID OnSelectAll( WPARAM, LPARAM ); VOID OnTakePicture( WPARAM, LPARAM ); LRESULT OnNotify( WPARAM wParam, LPARAM lParam ); LRESULT OnCommand( WPARAM wParam, LPARAM lParam ); // Hook procedure and static variables used to handle accelerators static HWND s_hWndDialog; static HHOOK s_hMessageHook; static LRESULT CALLBACK DialogHookProc( int nCode, WPARAM wParam, LPARAM ); public: static INT_PTR CALLBACK DialogProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); public: // For now static BOOL WINAPI OnThreadDestroy( CThreadMessage *pMsg ); static BOOL WINAPI OnGetThumbnail( CThreadMessage *pMsg ); static BOOL WINAPI OnGetPreview( CThreadMessage *pMsg ); static BOOL WINAPI OnThreadDeleteItem( CThreadMessage *pMsg ); }; #endif //__CAMDLG_H_INCLUDED