//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 2000. // // File: ConfirmationUI.h // // Contents: Confirmation UI for storage based copy engine // // History: 20-Mar-2000 ToddB // //-------------------------------------------------------------------------- #pragma once // these heights are in Dialog Uints, they get converted to pixels before use #define CX_DIALOG_PADDING 6 #define CY_DIALOG_PADDING 6 #define CY_STATIC_TEXT_HEIGHT 10 // This is the max string length of the attribute fields for an item #define CCH_DESC_LENGTH MAX_PATH class CTransferConfirmation : public ITransferConfirmation, public CComObjectRootEx, public CComCoClass { public: typedef struct tagITEMINFO { LPWSTR pwszIntro; // resource ID of the intro string, or 0 if there is none LPWSTR pwszDisplayName; // The display name of the item LPWSTR pwszAttribs; // The attributes for this item. Can be a variable number of lines in length HBITMAP hBitmap; HICON hIcon; } ITEMINFO, * LPITEMINFO; BEGIN_COM_MAP(CTransferConfirmation) COM_INTERFACE_ENTRY(ITransferConfirmation) END_COM_MAP() // IStorageProcessor STDMETHOD(Confirm)(CONFIRMOP * pcop, LPCONFIRMATIONRESPONSE pcr, BOOL * pbAll); protected: CTransferConfirmation(); ~CTransferConfirmation(); static INT_PTR CALLBACK s_ConfirmDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL ConfirmDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL OnInitDialog(HWND hwndDlg, WPARAM wParam, LPARAM lParam); BOOL OnCommand(HWND hwndDlg, int wID, HWND hwndCtl); HRESULT _Init(); HRESULT _ClearSettings(); HRESULT _GetDialogSettings(); HRESULT _FreeDialogSettings(); HRESULT _AddItem(IShellItem *psi, int idIntro=0); BOOL _CalculateMetrics(HWND hwndDlg); DWORD _DisplayItem(int iItem, HWND hwndDlg, int x, int y); int _WindowWidthFromString(HWND hwnd, LPTSTR psz); int _WindowHeightFromString(HWND hwnd, int cx, LPTSTR psz); BOOL _IsCopyOperation(STGOP stgop); // Input information CONFIRMOP m_cop; IPropertyUI * m_pPropUI; // Output results CONFIRMATIONRESPONSE m_crResult; BOOL m_fApplyToAll; // Stuff to control the display of the dialog int m_cxControlPadding; int m_cyControlPadding; int m_cyText; // the height of a static text control (10 dialog units converted into pixels) RECT m_rcDlg; // we remember the size of the dialog's client area since we use this a lot HFONT m_hfont; // the font used by the dialog, used to calculate sizes TCHAR * m_pszTitle; HICON m_hIcon; TCHAR * m_pszDescription; int m_idDialog; ITEMINFO m_rgItemInfo[2]; int m_cItems; BOOL m_fSingle; BOOL m_fShowARPLink; };