⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 view.h

📁 很好用的ftp源码
💻 H
字号:
/*****************************************************************************\
    FILE: view.h

    DESCRIPTION:
        This is our ShellView which implements FTP specific behavior.  We get
    the default DefView implementation and then use IShellFolderViewCB to 
    override behavior specific to us.
\*****************************************************************************/

#ifndef _FTPVIEW_H
#define _FTPVIEW_H

#include "isfvcb.h"
#include "statusbr.h"
#include "msieftp.h"
#include "dspsprt.h"


CFtpView * GetCFtpViewFromDefViewSite(IUnknown * punkSite);
CStatusBar * GetCStatusBarFromDefViewSite(IUnknown * punkSite);
HRESULT FtpView_SetRedirectPidl(IUnknown * punkSite, LPCITEMIDLIST pidl);


class CFtpView
                : public CBaseFolderViewCB
                , public IFtpWebView
                , public CImpIDispatch
{
public:
    //////////////////////////////////////////////////////
    // Public Interfaces
    //////////////////////////////////////////////////////
    
    // *** IUnknown ***
    virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
    virtual STDMETHODIMP_(ULONG) AddRef(void) {return CBaseFolderViewCB::AddRef();};
    virtual STDMETHODIMP_(ULONG) Release(void) {return CBaseFolderViewCB::Release();};

    // *** IDispatch methods ***
    virtual STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
    virtual STDMETHODIMP GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo * * pptinfo);
    virtual STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR * * rgszNames, UINT cNames, LCID lcid, DISPID * rgdispid);
    virtual STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo, UINT * puArgErr);
    
    // *** IFtpWebView methods ***
    virtual STDMETHODIMP get_Server(BSTR * pbstr);
    virtual STDMETHODIMP get_Directory(BSTR * pbstr);
    virtual STDMETHODIMP get_UserName(BSTR * pbstr);
    virtual STDMETHODIMP get_PasswordLength(long * plLength);
    virtual STDMETHODIMP get_EmailAddress(BSTR * pbstr);
    virtual STDMETHODIMP put_EmailAddress(BSTR bstr);
    virtual STDMETHODIMP get_CurrentLoginAnonymous(VARIANT_BOOL * pfAnonymousLogin);
    virtual STDMETHODIMP get_MessageOfTheDay(BSTR * pbstr);
    virtual STDMETHODIMP LoginAnonymously(void);
    virtual STDMETHODIMP LoginWithPassword(BSTR bUserName, BSTR bPassword);
    virtual STDMETHODIMP LoginWithoutPassword(BSTR bUserName);
    virtual STDMETHODIMP InvokeHelp(void) {return _OnInvokeFtpHelp(m_hwndOwner);};

    // *** CFtpViewPriv methods ***
    BOOL IsForegroundThread(void);
    CStatusBar * GetStatusBar(void) { return m_psb; };
    HRESULT SetRedirectPidl(LPCITEMIDLIST pidlRedirect);

public:
    // Public Member Functions
    static HRESULT DummyHintCallback(HWND hwnd, CFtpFolder * pff, HINTERNET hint, LPVOID pv1, LPVOID pv2);

    // Friend Functions
    friend HRESULT CFtpView_Create(CFtpFolder * pff, HWND hwndOwner, REFIID riid, LPVOID * ppv);

protected:
    // Private Member Variables
    HWND                    m_hwndOwner;            // The owner window
    HWND                    m_hwndStatusBar;        // The Status Bar window
    CFtpFolder *            m_pff;                  // The owner Folder
    LPGLOBALTIMEOUTINFO     m_hgtiWelcome;          // The timeout for the welcome message
    CStatusBar *            m_psb;                  // The timeout for the welcome message
    HINSTANCE               m_hinstInetCpl;         // HANDLE to Internet Control panel for View.Options.
    RECT                    m_rcPrev;               // Previous size so we know when to ignore resizes.
    UINT                    m_idMergedMenus;        // Where did I start merging menus?
    UINT                    m_nMenuItemsAdded;      // How many menu items did I had?
    LPITEMIDLIST            m_pidlRedirect;         // We want to redirect to this pidl. See the comments in _OnBackGroundEnumDone().
    UINT                    m_nThreadID;            // What is the main thread?

    // Private Member Functions
    CFtpView(CFtpFolder * pff, HWND hwndOwner);
    ~CFtpView();

    void _InitStatusBar(void);
    void _ShowMotd(void);
    HRESULT _OnInvokeFtpHelp(HWND hwnd);
    HRESULT _LoginWithPassword(LPCTSTR pszUserName, LPCTSTR pszPassword);

    virtual HRESULT _OnWindowCreated(void);
    virtual HRESULT _OnDefItemCount(LPINT pi);
    virtual HRESULT _OnGetHelpText(LPARAM lParam, WPARAM wParam);
    virtual HRESULT _OnGetZone(DWORD * pdwZone, WPARAM wParam);
    virtual HRESULT _OnGetPane(DWORD dwPaneID, DWORD * pdwPane);
    virtual HRESULT _OnRefresh(BOOL fReload);
    virtual HRESULT _OnDidDragDrop(DROPEFFECT de, IDataObject * pdto);
    virtual HRESULT _OnGetDetailsOf(UINT ici, PDETAILSINFO pdi);
    virtual HRESULT _OnInvokeCommand(UINT idc);
    virtual HRESULT _OnMergeMenu(LPQCMINFO pqcm);
    virtual HRESULT _OnUnMergeMenu(HMENU hMenu);
    virtual HRESULT _OnColumnClick(UINT ici);
    virtual HRESULT _OnGetNotify(LPITEMIDLIST * ppidl, LONG * lEvents);
    virtual HRESULT _OnSize(LONG x, LONG y);
    virtual HRESULT _OnUpdateStatusBar(void);
    virtual HRESULT _OnThisIDList(LPITEMIDLIST * ppidl);
    virtual HRESULT _OnAddPropertyPages(SFVM_PROPPAGE_DATA * pData);
    virtual HRESULT _OnInitMenuPopup(HMENU hmenu, UINT idCmdFirst, UINT nIndex);
    virtual HRESULT _OnGetHelpTopic(SFVM_HELPTOPIC_DATA * phtd);
    virtual HRESULT _OnBackGroundEnumDone(void);

    HRESULT _OnInvokeLoginAs(HWND hwndOwner);
    HRESULT _OnInvokeNewFolder(HWND hwndOwner);

    void _ShowMotdPsf(HWND hwndOwner);

private:
    static INT_PTR CALLBACK _MOTDDialogProc(HWND hDlg, UINT wm, WPARAM wParam, LPARAM lParam);
};

#endif // _FTPVIEW_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -