|
|
/*******************************************************************************
* * (C) COPYRIGHT MICROSOFT CORPORATION, 1998 * * TITLE: WIAUIEXT.H * * VERSION: 1.0 * * AUTHOR: ShaunIv * * DATE: 5/17/1999 * * DESCRIPTION: * *******************************************************************************/ #ifndef __WIAUIEXT_H_INCLUDED
#define __WIAUIEXT_H_INCLUDED
#include <windows.h>
#include <atlbase.h>
#include <objbase.h>
#include "uicommon.h"
#include "wiaseld.h"
#include "wiadebug.h"
#include "shlobj.h"
#include "itranhlp.h"
#include "isuppfmt.h"
#include "simstr.h"
#include "wia.h"
#include "wiadevd.h"
#include "wiadevdp.h"
#include "simarray.h"
#ifndef StiDeviceTypeStreamingVideo
#define StiDeviceTypeStreamingVideo 3
#endif
class CWiaDefaultUI : public IWiaUIExtension, public IWiaTransferHelper, public IWiaDataCallback, public IWiaSupportedFormats, public IShellExtInit, public IShellPropSheetExt, public IWiaMiscellaneousHelpers, public IWiaGetImageDlg, public IWiaProgressDialog, public IWiaAnnotationHelpers, public IWiaScannerPaperSizes { class CWiaFormatPair { private: GUID m_guidType; CSimpleStringWide m_strExtension; CSimpleStringWide m_strDescription;
public: CWiaFormatPair(void) : m_guidType(GUID_NULL) { } CWiaFormatPair( const GUID &cfType, const CSimpleStringWide &strExtension, const CSimpleStringWide &strDescription ) : m_guidType(cfType), m_strExtension(strExtension), m_strDescription(strDescription) { } CWiaFormatPair( const CWiaFormatPair &other ) : m_guidType(other.Type()), m_strExtension(other.Extension()), m_strDescription(other.Description()) { } ~CWiaFormatPair(void) { } CWiaFormatPair &operator=( const CWiaFormatPair &other ) { if (this != &other) { m_guidType = other.Type(); m_strExtension = other.Extension(); m_strDescription = other.Description(); } return *this; } bool operator==( const CWiaFormatPair &other ) { return ((Type() == other.Type()) != 0); }
GUID Type(void) const { return m_guidType; } void Type( const GUID &cfType ) { m_guidType = cfType; }
CSimpleStringWide Extension(void) const { return m_strExtension; } void Extension( const CSimpleStringWide &strExtension ) { m_strExtension = strExtension; }
CSimpleStringWide Description(void) const { return m_strDescription; } void Description( const CSimpleStringWide &strDescription ) { m_strDescription = strDescription; } };
private: LONG m_cRef;
// for IWiaTransferHelper
IWiaDataCallback *m_pSecondaryCallback; CComPtr<IWiaProgressDialog> m_pWiaProgressDialog;
// for IWiaSupportedFormats
int m_nDefaultFormat; CSimpleDynamicArray<CWiaFormatPair> m_WiaFormatPairs;
// for IShellExtInit, IShellPropSheetExt
CComPtr<IWiaItem> m_pItem;
// for IWiaProgressDialog
HWND m_hWndProgress;
public: const IWiaItem *Item(void) const { return m_pItem.p; }
public: ~CWiaDefaultUI(void); CWiaDefaultUI(void);
// IUnknown
STDMETHODIMP QueryInterface( REFIID riid, LPVOID *ppvObject ); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
// IWiaUIExtension
STDMETHODIMP DeviceDialog( PDEVICEDIALOGDATA pDeviceDialogData ); STDMETHODIMP GetDeviceIcon( BSTR bstrDeviceId, HICON *phIcon, ULONG nSize ); STDMETHODIMP GetDeviceBitmapLogo( BSTR bstrDeviceId, HBITMAP *phBitmap, ULONG nMaxWidth, ULONG nMaxHeight );
// IWiaTransferHelper
STDMETHODIMP TransferItemFile( IWiaItem *pWiaItem, HWND hwndParent, DWORD dwFlags, GUID cfFormat, LPCWSTR pszFilename, IWiaDataCallback *pSecondaryCallback, LONG nMediaType ); STDMETHODIMP TransferItemBanded( IWiaItem *pWiaItem, HWND hwndParent, DWORD dwFlags, GUID cfFormat, ULONG ulBufferSize, IWiaDataCallback *pSecondaryCallback );
// IWiaDataCallback
STDMETHODIMP BandedDataCallback(LONG,LONG,LONG,LONG,LONG,LONG,LONG,PBYTE);
// IWiaSupportedFormats
STDMETHODIMP Initialize( IWiaItem *pWiaItem, LONG nMediaType ); STDMETHODIMP GetFormatCount( LONG *pnCount ); STDMETHODIMP GetFormatType( LONG nFormat, GUID *pcfClipFormat ); STDMETHODIMP GetFormatExtension( LONG nFormat, LPWSTR pszExtension, int nMaxLen ); STDMETHODIMP GetFormatDescription( LONG nFormat, LPWSTR pszDescription, int nMaxLen ); STDMETHODIMP GetDefaultClipboardFileFormat( GUID *pcfFormat ); STDMETHODIMP GetDefaultClipboardFileFormatIndex( LONG *pnFormat ); STDMETHODIMP GetClipboardFileExtension( GUID cfFormat, LPWSTR pszExt, DWORD nMaxLen ); STDMETHODIMP ChangeClipboardFileExtension(IN GUID cfFormat, LPWSTR pszFilename, DWORD nMaxLen ); STDMETHODIMP ConstructFileOpenDialogStyleString( BSTR *pbstrString );
// IShellExtInit
STDMETHODIMP Initialize( LPCITEMIDLIST pidlFolder, LPDATAOBJECT lpdobj, HKEY hkeyProgID );
// IShellPropSheetExt
STDMETHODIMP AddPages( LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam ); STDMETHODIMP ReplacePage( UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplacePage, LPARAM lParam ) { return E_NOTIMPL; }
// *** IWiaMiscellaneousHelper methods ***
STDMETHODIMP GetDeviceIcon( LONG nDeviceType, HICON *phIcon, int nSize );
// *** IWiaGetImageDlg ***
STDMETHODIMP SelectDeviceDlg( HWND hwndParent, BSTR bstrInitialDeviceId, LONG lDeviceType, LONG lFlags, BSTR *pbstrDeviceID, IWiaItem **ppWiaItemRoot ); STDMETHODIMP GetImageDlg( IWiaDevMgr *pWiaDevMgr, HWND hwndParent, LONG lDeviceType, LONG lFlags, LONG lIntent, IWiaItem *pItemRoot, BSTR bstrFilename, GUID *pguidFormat );
// *** IWiaProgressDialog methods ***
STDMETHODIMP Create( HWND hwndParent, LONG lFlags ); STDMETHODIMP Show(void); STDMETHODIMP Hide(void); STDMETHODIMP Cancelled( BOOL *pbCancelled ); STDMETHODIMP SetTitle( LPCWSTR pszMessage ); STDMETHODIMP SetMessage( LPCWSTR pszTitle ); STDMETHODIMP SetPercentComplete( UINT nPercent ); STDMETHODIMP Destroy(void);
// *** IWiaAnnotationHelpers methods ***
STDMETHODIMP GetAnnotationOverlayIcon( CAnnotationType AnnotationType, HICON *phIcon, int nSize ); STDMETHODIMP GetAnnotationType( IUnknown *pUnknown, CAnnotationType &AnnotationType ); STDMETHODIMP GetAnnotationFormat( IUnknown *pUnknown, GUID &guidFormat ); STDMETHODIMP GetAnnotationSize( IUnknown *pUnknown, LONG &nSize, LONG nMediaType ); STDMETHODIMP TransferAttachmentToMemory( IUnknown *pUnknown, GUID &guidFormat, HWND hWndProgressParent, PBYTE *pBuffer, DWORD *pdwSize );
// *** IWiaScannerPaperSizes ***
STDMETHODIMP GetPaperSizes( CWiaPaperSize **ppPaperSizes, UINT *pnCount ); STDMETHODIMP FreePaperSizes( CWiaPaperSize **ppPaperSizes, UINT *pnCount ); };
// This calls the real SelectDeviceDlg in the device selection static library
HRESULT WINAPI SelectDeviceDialog( PSELECTDEVICEDLG pSelectDeviceDlg );
#endif //__WIAUIEXT_H_INCLUDED
|