view.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 6k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. /*****************************************************************************
  2.     FILE: view.h
  3.     DESCRIPTION:
  4.         This is our ShellView which implements FTP specific behavior.  We get
  5.     the default DefView implementation and then use IShellFolderViewCB to 
  6.     override behavior specific to us.
  7. *****************************************************************************/
  8. #ifndef _FTPVIEW_H
  9. #define _FTPVIEW_H
  10. #include "isfvcb.h"
  11. #include "statusbr.h"
  12. #include "msieftp.h"
  13. #include "dspsprt.h"
  14. CFtpView * GetCFtpViewFromDefViewSite(IUnknown * punkSite);
  15. CStatusBar * GetCStatusBarFromDefViewSite(IUnknown * punkSite);
  16. HRESULT FtpView_SetRedirectPidl(IUnknown * punkSite, LPCITEMIDLIST pidl);
  17. class CFtpView
  18.                 : public CBaseFolderViewCB
  19.                 , public IFtpWebView
  20.                 , public CImpIDispatch
  21. {
  22. public:
  23.     //////////////////////////////////////////////////////
  24.     // Public Interfaces
  25.     //////////////////////////////////////////////////////
  26.     
  27.     // *** IUnknown ***
  28.     virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
  29.     virtual STDMETHODIMP_(ULONG) AddRef(void) {return CBaseFolderViewCB::AddRef();};
  30.     virtual STDMETHODIMP_(ULONG) Release(void) {return CBaseFolderViewCB::Release();};
  31.     // *** IDispatch methods ***
  32.     virtual STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
  33.     virtual STDMETHODIMP GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo * * pptinfo);
  34.     virtual STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR * * rgszNames, UINT cNames, LCID lcid, DISPID * rgdispid);
  35.     virtual STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo, UINT * puArgErr);
  36.     
  37.     // *** IFtpWebView methods ***
  38.     virtual STDMETHODIMP get_Server(BSTR * pbstr);
  39.     virtual STDMETHODIMP get_Directory(BSTR * pbstr);
  40.     virtual STDMETHODIMP get_UserName(BSTR * pbstr);
  41.     virtual STDMETHODIMP get_PasswordLength(long * plLength);
  42.     virtual STDMETHODIMP get_EmailAddress(BSTR * pbstr);
  43.     virtual STDMETHODIMP put_EmailAddress(BSTR bstr);
  44.     virtual STDMETHODIMP get_CurrentLoginAnonymous(VARIANT_BOOL * pfAnonymousLogin);
  45.     virtual STDMETHODIMP get_MessageOfTheDay(BSTR * pbstr);
  46.     virtual STDMETHODIMP LoginAnonymously(void);
  47.     virtual STDMETHODIMP LoginWithPassword(BSTR bUserName, BSTR bPassword);
  48.     virtual STDMETHODIMP LoginWithoutPassword(BSTR bUserName);
  49.     virtual STDMETHODIMP InvokeHelp(void) {return _OnInvokeFtpHelp(m_hwndOwner);};
  50.     // *** CFtpViewPriv methods ***
  51.     BOOL IsForegroundThread(void);
  52.     CStatusBar * GetStatusBar(void) { return m_psb; };
  53.     HRESULT SetRedirectPidl(LPCITEMIDLIST pidlRedirect);
  54. public:
  55.     // Public Member Functions
  56.     static HRESULT DummyHintCallback(HWND hwnd, CFtpFolder * pff, HINTERNET hint, LPVOID pv1, LPVOID pv2);
  57.     // Friend Functions
  58.     friend HRESULT CFtpView_Create(CFtpFolder * pff, HWND hwndOwner, REFIID riid, LPVOID * ppv);
  59. protected:
  60.     // Private Member Variables
  61.     HWND                    m_hwndOwner;            // The owner window
  62.     HWND                    m_hwndStatusBar;        // The Status Bar window
  63.     CFtpFolder *            m_pff;                  // The owner Folder
  64.     LPGLOBALTIMEOUTINFO     m_hgtiWelcome;          // The timeout for the welcome message
  65.     CStatusBar *            m_psb;                  // The timeout for the welcome message
  66.     HINSTANCE               m_hinstInetCpl;         // HANDLE to Internet Control panel for View.Options.
  67.     RECT                    m_rcPrev;               // Previous size so we know when to ignore resizes.
  68.     UINT                    m_idMergedMenus;        // Where did I start merging menus?
  69.     UINT                    m_nMenuItemsAdded;      // How many menu items did I had?
  70.     LPITEMIDLIST            m_pidlRedirect;         // We want to redirect to this pidl. See the comments in _OnBackGroundEnumDone().
  71.     UINT                    m_nThreadID;            // What is the main thread?
  72.     // Private Member Functions
  73.     CFtpView(CFtpFolder * pff, HWND hwndOwner);
  74.     ~CFtpView();
  75.     void _InitStatusBar(void);
  76.     void _ShowMotd(void);
  77.     HRESULT _OnInvokeFtpHelp(HWND hwnd);
  78.     HRESULT _LoginWithPassword(LPCTSTR pszUserName, LPCTSTR pszPassword);
  79.     virtual HRESULT _OnWindowCreated(void);
  80.     virtual HRESULT _OnDefItemCount(LPINT pi);
  81.     virtual HRESULT _OnGetHelpText(LPARAM lParam, WPARAM wParam);
  82.     virtual HRESULT _OnGetZone(DWORD * pdwZone, WPARAM wParam);
  83.     virtual HRESULT _OnGetPane(DWORD dwPaneID, DWORD * pdwPane);
  84.     virtual HRESULT _OnRefresh(BOOL fReload);
  85.     virtual HRESULT _OnDidDragDrop(DROPEFFECT de, IDataObject * pdto);
  86.     virtual HRESULT _OnGetDetailsOf(UINT ici, PDETAILSINFO pdi);
  87.     virtual HRESULT _OnInvokeCommand(UINT idc);
  88.     virtual HRESULT _OnMergeMenu(LPQCMINFO pqcm);
  89.     virtual HRESULT _OnUnMergeMenu(HMENU hMenu);
  90.     virtual HRESULT _OnColumnClick(UINT ici);
  91.     virtual HRESULT _OnGetNotify(LPITEMIDLIST * ppidl, LONG * lEvents);
  92.     virtual HRESULT _OnSize(LONG x, LONG y);
  93.     virtual HRESULT _OnUpdateStatusBar(void);
  94.     virtual HRESULT _OnThisIDList(LPITEMIDLIST * ppidl);
  95.     virtual HRESULT _OnAddPropertyPages(SFVM_PROPPAGE_DATA * pData);
  96.     virtual HRESULT _OnInitMenuPopup(HMENU hmenu, UINT idCmdFirst, UINT nIndex);
  97.     virtual HRESULT _OnGetHelpTopic(SFVM_HELPTOPIC_DATA * phtd);
  98.     virtual HRESULT _OnBackGroundEnumDone(void);
  99.     HRESULT _OnInvokeLoginAs(HWND hwndOwner);
  100.     HRESULT _OnInvokeNewFolder(HWND hwndOwner);
  101.     void _ShowMotdPsf(HWND hwndOwner);
  102. private:
  103.     static INT_PTR CALLBACK _MOTDDialogProc(HWND hDlg, UINT wm, WPARAM wParam, LPARAM lParam);
  104. };
  105. #endif // _FTPVIEW_H