isfband.h
Upload User: caisha3
Upload Date: 2013-09-21
Package Size: 208739k
Code Size: 9k
Category:

Windows Develop

Development Platform:

Visual C++

  1. #ifndef BANDISF
  2. #define BANDISF
  3. //#include "iface.h"
  4. #include "bands.h"
  5. //#include "cwndproc.h"
  6. //#include "droptgt.h"
  7. #include "logo.h"
  8. #include "sftbar.h"
  9. class CISFBand : public CToolbarBand,
  10.                  public CSFToolbar,
  11.                  public CLogoBase
  12. {
  13. public:
  14.     // *** IUnknown ***
  15.     virtual STDMETHODIMP_(ULONG) AddRef(void) { return CToolBand::AddRef(); };
  16.     virtual STDMETHODIMP_(ULONG) Release(void){ return CToolBand::Release(); };
  17.     virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
  18.     // *** IDockingWindow methods (override) ***
  19.     virtual STDMETHODIMP ShowDW(BOOL fShow);
  20.     virtual STDMETHODIMP CloseDW(DWORD dw);
  21.     // *** IObjectWithSite methods ***
  22.     virtual STDMETHODIMP SetSite(IUnknown* punkSite);
  23.     // *** IDeskBand methods ***
  24.     virtual STDMETHODIMP GetBandInfo(DWORD dwBandID, DWORD fViewMode, 
  25.                                    DESKBANDINFO* pdbi);
  26.     // *** IPersistStream methods (CToolBand PURE) ***
  27.     virtual STDMETHODIMP GetClassID(LPCLSID lpClassID);
  28.     virtual STDMETHODIMP Load(IStream *pStm);
  29.     virtual STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty);
  30.     // *** IContextMenu methods (override) ***
  31.     virtual STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpici);
  32.     
  33.     // *** IOleCommandTarget ***
  34.     virtual STDMETHODIMP QueryStatus(const GUID *pguidCmdGroup,
  35.         ULONG cCmds, OLECMD rgCmds[], OLECMDTEXT *pcmdtext);
  36.     virtual STDMETHODIMP Exec(const GUID *pguidCmdGroup,
  37.                               DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvarargIn,
  38.                               VARIANTARG *pvarargOut);
  39.     
  40.     // *** IShellFolderBand methods ***
  41.     virtual STDMETHODIMP InitializeSFB(LPSHELLFOLDER psf, LPCITEMIDLIST pidl);
  42.     virtual STDMETHODIMP SetBandInfoSFB(BANDINFOSFB * pbi);
  43.     virtual STDMETHODIMP GetBandInfoSFB(BANDINFOSFB * pbi);
  44.     // *** IInputObject methods ***
  45.     virtual STDMETHODIMP TranslateAcceleratorIO(LPMSG lpMsg);
  46.     // BUGBUG: remove this - nobody should talk to CISFBand directly...
  47.     //         anything we do will need to be done by ISVs that can
  48.     //         only CoCreateInstance this object.
  49.     //
  50.     // for internal guys so that we don't have to use a prop page
  51.     //
  52.     void SetCascade(BOOL f) { _fCascadeFolder = BOOLIFY(f); };
  53.     void SetAccelerators(BOOL f) { _fAccelerators = BOOLIFY(f); }; 
  54.     void SetNoIcons(BOOL f)   { _fNoIcons = BOOLIFY(f); };
  55.     void SetNoText(BOOL f)  { _fNoShowText = BOOLIFY(f); };
  56. protected:
  57.     friend HRESULT    CISFBand_CreateInstance(IUnknown * punkOuter, IUnknown ** ppunk, LPCOBJECTINFO poi);
  58.     friend CISFBand * CISFBand_CreateEx(IShellFolder * psf, LPCITEMIDLIST pidl);
  59.     CISFBand();
  60.     virtual ~CISFBand();
  61.     void    _ReleaseMenu();
  62.     void    _SetDirty(BOOL fDirty);
  63.     virtual HRESULT _SetSubMenuPopup(IMenuPopup* pmp, UINT uiCmd, LPCITEMIDLIST pidl, DWORD dwFlagsMDBPU);
  64.     virtual IMenuPopup * _CreateMenuPopup(IShellFolder * psf, LPCITEMIDLIST pidl, BANDINFOSFB * pbi);
  65.     virtual void _SendInitMenuPopup(IMenuPopup * pmp, LPCITEMIDLIST pidl);
  66.     virtual LRESULT _OnHotItemChange(NMTBHOTITEM * pnmhot);
  67.     virtual LRESULT _DefWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  68.     virtual LRESULT _OnContextMenu(WPARAM wParam, LPARAM lParam);
  69.     virtual LRESULT _OnNotify(LPNMHDR pnm);
  70.     virtual HRESULT _TBStyleForPidl(LPCITEMIDLIST pidl, 
  71.                                    DWORD * pdwTBStyle, DWORD* pdwTBState, DWORD * pdwMIFFlags, int* piIcon);
  72.     void    _ReleaseMenuPopup(IMenuPopup** ppmp);
  73.     void    _SetCacheMenuPopup(IMenuPopup* pmp);
  74.     HRESULT _DropdownItem(LPCITEMIDLIST pidl, UINT idCmd);
  75.     LRESULT _TryChannelSurfing(LPCITEMIDLIST pidl);
  76.     HRESULT _GetChannelBrowser(IWebBrowser2 **ppwb);
  77.     HRESULT _IStreamFromOrderList(VARIANT* pvarargOut);
  78.     HRESULT _OrderListFromIStream(VARIANT* pvarargIn);
  79.     IMenuPopup *_pmpCache;
  80.     IMenuPopup *    _pmp;               // Submenu popup
  81.     const GUID*     _pguidUEMGroup;
  82.     BITBOOL         _fCascadeFolder :1;
  83.     BITBOOL         _fNoRecalcDefaults :1;// Don't recalc defaults during GetBandInfo
  84.     BITBOOL         _fInitialized :1;   // have we initialized the toolbar
  85.     BITBOOL         _fDebossed :1;      // TRUE to enable debossed rebar style
  86.     BITBOOL         _fLinksMode :1;     // TRUE: do not allow drag & drop onto content items.
  87.     BITBOOL         _fHaveBkColor :1;    // TRUE if _crBkgnd is valid
  88.     BITBOOL         _fHaveColors :1;    // TRUE if _crBtnXX are valid
  89.     BITBOOL         _fFullOpen :1;      // TRUE if band should maximize when opened
  90.     BITBOOL         _fClosing : 1;      // TRUE if we are shutting down....
  91.     BITBOOL         _fDesktop :1;       // 1:desktop 0:browser(or non-ActDesk)
  92.     BITBOOL         _fBtnMinSize :1;    // TRUE if band should report min thickness of button
  93.     BITBOOL         _fDelayPainting :1;
  94.     BITBOOL         _fChannels :1;      // TRUE if we want "Navigate Target" sup
  95.     BITBOOL         _fCreatedBandProxy :1; // TRUE if we created a BandProxy ourself and hence need to call SetOwner on it
  96.     BITBOOL         _fAllowDropdown: 1;
  97.     BITBOOL         _fDelayInit :1;
  98.     
  99.     int             _eUemLog :2;        // UEMIND_* (NIL:off, o.w.:group)
  100.     int             _iIdealLength;      // our ideal height/width last time bandsite asked
  101.     
  102.     COLORREF        _crBkgnd;           // Background color (must set _fHaveBkColor)
  103.     COLORREF        _crBtnLt;           // Button hilite color (must set _fHaveColors)
  104.     COLORREF        _crBtnDk;           // Button lolite color (must set _fHaveColors)
  105.     DWORD _dwPriv; // private for bsmenu
  106.     IBandProxy      * _pbp;
  107.     HPALETTE _hpalOld;          // the old palette saved while we do a draw.....
  108.     int _GetIdealSize(PSIZE psize);
  109.     HRESULT _IsPidlVisible(LPITEMIDLIST pidl);
  110.     virtual LRESULT _OnCommand(WPARAM wParam, LPARAM lParam);
  111.     virtual LRESULT _OnCustomDraw(NMCUSTOMDRAW* pnmcd);
  112.     virtual void _OnDragBegin(int iItem, DWORD dwPreferedEffect);
  113.     
  114.     virtual void _CreateToolbar(HWND hwndParent);
  115.     virtual HWND _CreatePager(HWND hwndParent);
  116.     virtual int _GetBitmap(int iCommandID, PIBDATA pibData, BOOL fUseCache);
  117.     virtual void _ToolbarChanged() { _BandInfoChanged(); };
  118.     BOOL _IsChildID(LPCITEMIDLIST pidl, LPCITEMIDLIST pidlChild);
  119.     BOOL _UpdateIconSize(UINT fIconSize, BOOL fUpdateButtons);
  120.     void _UpdateVerticalMode(BOOL fVertical);
  121.     LRESULT _TryCascadingItem(LPCITEMIDLIST pidl, UINT uiCmd);
  122.     LRESULT _TrySimpleInvoke(LPCITEMIDLIST pidl);
  123.     HRESULT _SiteOnSelect(DWORD dwType);
  124.     
  125.     virtual HRESULT _GetTitleW(LPWSTR pwzTitle, DWORD cchSize);
  126.     virtual void _Initialize();
  127.     friend class CExtractImageTask;
  128.     friend HRESULT CALLBACK UpdateBandLogo( LPVOID pData, DWORD dwItem, HBITMAP hImage, LPCWSTR pszCache, BOOL fCache );
  129.     friend HRESULT FindBandInBandSite(IMenuPopup* pmpParent, IBandSite** ppbs, LPCITEMIDLIST pidl, REFIID riid, void** ppvOut);
  130.     // stuff for CLogoBase
  131.     virtual IShellFolder * GetSF();
  132.     virtual HWND GetHWND();
  133.     virtual REFTASKOWNERID GetTOID();
  134.     virtual HRESULT OnTranslatedChange(LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2);
  135.     virtual HRESULT UpdateLogoCallback( DWORD dwItem, int iIcon, HBITMAP hImage, LPCWSTR pszCache, BOOL fCache );
  136.     
  137.     void _StopDelayPainting();
  138.     void _FixupAppDataDirectory();
  139. };
  140. CISFBand * CISFBand_CreateEx(IShellFolder * psf, LPCITEMIDLIST pidl);
  141. IMenuPopup* ISFBandCreateMenuPopup(IUnknown *punk, IShellFolder* psf, LPCITEMIDLIST pidl, BANDINFOSFB * pbi, BOOL bMenuBand);
  142. IMenuPopup* ISFBandCreateMenuPopup2(IUnknown *punk, IMenuBand* pmb, IShellFolder* psf, LPCITEMIDLIST pidl, BANDINFOSFB * pbi, BOOL bMenuBand);
  143. #define CGID_ISFBand CLSID_ISFBand
  144. typedef enum {
  145.     ISFBID_PRIVATEID        = 1,
  146.     ISFBID_ISITEMVISIBLE    = 2,
  147.     ISFBID_CACHEPOPUP       = 3,
  148.     ISFBID_GETORDERSTREAM   = 4,
  149.     ISFBID_SETORDERSTREAM   = 5,
  150. } ISFBID_FLAGS;
  151. HRESULT CExtractImageTask_Create( CLogoBase* plb,
  152.                                   LPEXTRACTIMAGE pExtract,
  153.                                   LPCWSTR pszCache,
  154.                                   DWORD dwItem,
  155.                                   int iIcon,
  156.                                   DWORD dwFlags,
  157.                                   LPRUNNABLETASK * ppTask );
  158. #define EITF_SAVEBITMAP     0x00000001  // do not delete bitmap on destructor
  159. #define EITF_ALWAYSCALL     0x00000002  // always call the update whether extract succeded or not
  160. HRESULT IUnknown_SetBandInfoSFB(IUnknown *punkBand, BANDINFOSFB *pbi);
  161. #endif