[CMAKE]
[reactos.git] / dll / win32 / browseui / brandband.h
1 /*
2 * ReactOS Explorer
3 *
4 * Copyright 2009 Andrew Hill <ash77@reactos.org>
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21 #pragma once
22
23 class CBrandBand :
24 public CWindowImpl<CBrandBand, CWindow, CControlWinTraits>,
25 public CComCoClass<CBrandBand, &CLSID_BrandBand>,
26 public CComObjectRootEx<CComMultiThreadModelNoCS>,
27 public IDeskBand,
28 public IObjectWithSite,
29 public IInputObject,
30 public IPersistStream,
31 public IWinEventHandler,
32 public IOleCommandTarget,
33 public IServiceProvider,
34 public IDispatch
35 {
36 private:
37 CComPtr<IDockingWindowSite> fSite;
38 DWORD fProfferCookie;
39 int fCurrentFrame;
40 int fMaxFrameCount;
41 HBITMAP fImageBitmap;
42 int fBitmapSize;
43 DWORD fAdviseCookie;
44 public:
45 CBrandBand();
46 ~CBrandBand();
47 void StartAnimation();
48 void StopAnimation();
49 void SelectImage();
50 public:
51 // *** IDeskBand methods ***
52 virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi);
53
54 // *** IObjectWithSite methods ***
55 virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown* pUnkSite);
56 virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
57
58 // *** IOleWindow methods ***
59 virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
60 virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
61
62 // *** IDockingWindow methods ***
63 virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
64 virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved);
65 virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
66
67 // *** IInputObject methods ***
68 virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
69 virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
70 virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
71
72 // *** IPersist methods ***
73 virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
74
75 // *** IPersistStream methods ***
76 virtual HRESULT STDMETHODCALLTYPE IsDirty();
77 virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
78 virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
79 virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
80
81 // *** IWinEventHandler methods ***
82 virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
83 virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
84
85 // *** IOleCommandTarget methods ***
86 virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
87 virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
88
89 // *** IServiceProvider methods ***
90 virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
91
92 // *** IDispatch methods ***
93 virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
94 virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
95 virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
96 virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
97
98 // message handlers
99 LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
100 LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
101 LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
102 LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
103
104 BEGIN_MSG_MAP(CBrandBand)
105 // MESSAGE_HANDLER(WM_SIZE, OnSize)
106 MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
107 MESSAGE_HANDLER(WM_PAINT, OnPaint)
108 MESSAGE_HANDLER(WM_TIMER, OnTimer)
109 END_MSG_MAP()
110
111 DECLARE_REGISTRY_RESOURCEID(IDR_BRANDBAND)
112 DECLARE_NOT_AGGREGATABLE(CBrandBand)
113
114 DECLARE_PROTECT_FINAL_CONSTRUCT()
115
116 BEGIN_COM_MAP(CBrandBand)
117 COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
118 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
119 COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
120 COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
121 COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
122 COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
123 COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
124 COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
125 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
126 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
127 COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
128 END_COM_MAP()
129 };