|
|
//+-------------------------------------------------------------------------
//
// 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<CComSingleThreadModel>, public CComCoClass<CTransferConfirmation, &CLSID_TransferConfirmationUI> { 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; };
|