4 * Copyright 2007 Hervé Poussineau
5 * Copyright 2009 Andrew Hill
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #include "shellmenu.h"
25 #include "CBandSite.h"
27 WINE_DEFAULT_DEBUG_CHANNEL(CBandSite
);
30 #define ASSERT(cond) \
32 ERR ("ASSERTION %s AT %s:%d FAILED!\n", #cond, __FILE__, __LINE__)
36 HRESULT WINAPI
CBandSite_Constructor(REFIID riid
, LPVOID
*ppv
)
38 return ShellObjectCreator
<CBandSite
>(riid
, ppv
);
41 CBandSiteBase::CBandSiteBase()
49 UINT
CBandSiteBase::GetBandID(struct BandObject
*Band
)
51 return (UINT
)(Band
- fBands
);
54 struct CBandSiteBase::BandObject
*CBandSiteBase::GetBandByID(DWORD dwBandID
)
56 if ((LONG
)dwBandID
>= fBandsAllocated
)
59 if (fBands
[dwBandID
].DeskBand
== NULL
)
62 return &fBands
[dwBandID
];
65 void CBandSiteBase::FreeBand(struct BandObject
*Band
)
67 ATLASSERT(Band
->DeskBand
!= NULL
);
68 ATLASSERT(Band
->OleWindow
!= NULL
);
69 ATLASSERT(Band
->WndEvtHandler
!= NULL
);
70 Band
->DeskBand
->Release();
71 Band
->OleWindow
->Release();
72 Band
->WndEvtHandler
->Release();
73 memset(Band
, 0, sizeof(*Band
));
77 DWORD
CBandSiteBase::GetBandSiteViewMode()
81 /* FIXME: What about DBIF_VIEWMODE_FLOATING and DBIF_VIEWMODE_TRANSPARENT? */
82 dwStyle
= GetWindowLongPtr(fRebarWindow
, GWL_STYLE
);
84 if (dwStyle
& CCS_VERT
)
85 return DBIF_VIEWMODE_VERTICAL
;
87 return DBIF_VIEWMODE_NORMAL
;
90 VOID
CBandSiteBase::BuildRebarBandInfo(struct BandObject
*Band
, REBARBANDINFOW
*prbi
)
92 ZeroMemory(prbi
, sizeof(*prbi
));
93 prbi
->cbSize
= sizeof(*prbi
);
95 prbi
->fMask
= RBBIM_ID
;
96 prbi
->wID
= GetBandID(Band
);
98 if (Band
->dbi
.dwMask
& DBIM_MINSIZE
)
100 prbi
->fMask
|= RBBIM_CHILDSIZE
;
101 prbi
->cxMinChild
= Band
->dbi
.ptMinSize
.x
;
102 prbi
->cyMinChild
= Band
->dbi
.ptMinSize
.y
;
105 if (Band
->dbi
.dwMask
& DBIM_MAXSIZE
)
107 prbi
->fMask
|= RBBIM_CHILDSIZE
;
108 prbi
->cyMaxChild
= Band
->dbi
.ptMaxSize
.y
;
111 if ((Band
->dbi
.dwMask
& (DBIM_INTEGRAL
| DBIM_MODEFLAGS
)) == (DBIM_INTEGRAL
| DBIM_MODEFLAGS
) &&
112 (Band
->dbi
.dwModeFlags
& DBIMF_VARIABLEHEIGHT
))
114 prbi
->fMask
|= RBBIM_CHILDSIZE
;
115 prbi
->cyIntegral
= Band
->dbi
.ptIntegral
.y
;
118 if (Band
->dbi
.dwMask
& DBIM_ACTUAL
)
120 prbi
->fMask
|= RBBIM_IDEALSIZE
| RBBIM_SIZE
| RBBIM_CHILDSIZE
;
121 prbi
->cxIdeal
= Band
->dbi
.ptActual
.x
;
122 prbi
->cx
= Band
->dbi
.ptActual
.x
;
123 prbi
->cyChild
= Band
->dbi
.ptActual
.y
;
126 if (Band
->dbi
.dwMask
& DBIM_TITLE
)
128 prbi
->fMask
|= RBBIM_TEXT
;
129 prbi
->lpText
= Band
->dbi
.wszTitle
;
130 prbi
->cch
= wcslen(Band
->dbi
.wszTitle
);
133 if (Band
->dbi
.dwMask
& DBIM_MODEFLAGS
)
135 prbi
->fMask
|= RBBIM_STYLE
;
137 if (Band
->dbi
.dwModeFlags
& DBIMF_FIXED
)
138 prbi
->fStyle
|= RBBS_FIXEDSIZE
| RBBS_NOGRIPPER
;
139 if (Band
->dbi
.dwModeFlags
& DBIMF_FIXEDBMP
)
140 prbi
->fStyle
|= RBBS_FIXEDBMP
;
141 if (Band
->dbi
.dwModeFlags
& DBIMF_VARIABLEHEIGHT
)
142 prbi
->fStyle
|= RBBS_VARIABLEHEIGHT
;
143 if (Band
->dbi
.dwModeFlags
& DBIMF_DEBOSSED
)
144 prbi
->fStyle
|= RBBS_CHILDEDGE
;
145 if (Band
->dbi
.dwModeFlags
& DBIMF_USECHEVRON
)
146 prbi
->fStyle
|= RBBS_USECHEVRON
;
147 if (Band
->dbi
.dwModeFlags
& DBIMF_BREAK
)
148 prbi
->fStyle
|= RBBS_BREAK
;
149 if (Band
->dbi
.dwModeFlags
& DBIMF_TOPALIGN
)
150 prbi
->fStyle
|= RBBS_TOPALIGN
;
151 if (Band
->dbi
.dwModeFlags
& DBIMF_NOGRIPPER
)
152 prbi
->fStyle
|= RBBS_NOGRIPPER
;
153 if (Band
->dbi
.dwModeFlags
& DBIMF_ALWAYSGRIPPER
)
154 prbi
->fStyle
|= RBBS_GRIPPERALWAYS
;
157 if ((Band
->dbi
.dwMask
& (DBIM_BKCOLOR
| DBIM_MODEFLAGS
)) == (DBIM_BKCOLOR
| DBIM_MODEFLAGS
) &&
158 (Band
->dbi
.dwModeFlags
& DBIMF_BKCOLOR
))
160 prbi
->fMask
|= RBBIM_COLORS
;
161 prbi
->clrFore
= (COLORREF
)(COLOR_WINDOWTEXT
+ 1);
162 prbi
->clrBack
= Band
->dbi
.crBkgnd
;
166 HRESULT
CBandSiteBase::UpdateSingleBand(struct BandObject
*Band
)
173 ZeroMemory(&Band
->dbi
, sizeof(Band
->dbi
));
174 Band
->dbi
.dwMask
= DBIM_MINSIZE
| DBIM_MAXSIZE
| DBIM_INTEGRAL
|
175 DBIM_ACTUAL
| DBIM_TITLE
| DBIM_MODEFLAGS
| DBIM_BKCOLOR
;
177 dwViewMode
= GetBandSiteViewMode();
179 hRet
= Band
->DeskBand
->GetBandInfo((DWORD
)GetBandID(Band
), dwViewMode
, &Band
->dbi
);
182 BuildRebarBandInfo(Band
, &rbi
);
183 if (SUCCEEDED(Band
->OleWindow
->GetWindow(&rbi
.hwndChild
)) &&
184 rbi
.hwndChild
!= NULL
)
186 rbi
.fMask
|= RBBIM_CHILD
;
187 WARN ("ReBar band uses child window 0x%p\n", rbi
.hwndChild
);
190 uBand
= (UINT
)SendMessageW(fRebarWindow
, RB_IDTOINDEX
, (WPARAM
)rbi
.wID
, 0);
191 if (uBand
!= (UINT
)-1)
193 if (!SendMessageW(fRebarWindow
, RB_SETBANDINFOW
, (WPARAM
)uBand
, reinterpret_cast<LPARAM
>(&rbi
)))
195 WARN("Failed to update the rebar band!\n");
199 WARN("Failed to map rebar band id to index!\n");
206 HRESULT
CBandSiteBase::UpdateAllBands()
211 for (i
= 0; i
< fBandsAllocated
; i
++)
213 if (fBands
[i
].DeskBand
!= NULL
)
215 hRet
= UpdateSingleBand(&fBands
[i
]);
216 if (FAILED_UNEXPECTEDLY(hRet
))
224 HRESULT
CBandSiteBase::UpdateBand(DWORD dwBandID
)
226 struct BandObject
*Band
;
228 Band
= GetBandByID(dwBandID
);
232 return UpdateSingleBand(Band
);
235 struct CBandSiteBase::BandObject
*CBandSiteBase::GetBandFromHwnd(HWND hwnd
)
241 for (i
= 0; i
< fBandsAllocated
; i
++)
243 if (fBands
[i
].DeskBand
!= NULL
)
245 ASSERT(fBands
[i
].OleWindow
);
248 hRet
= fBands
[i
].OleWindow
->GetWindow(&hWndBand
);
249 if (SUCCEEDED(hRet
) && hWndBand
== hwnd
)
257 CBandSiteBase::~CBandSiteBase()
260 TRACE("destroying %p\n", this);
262 if (fRebarWindow
!= NULL
)
264 DestroyWindow(fRebarWindow
);
270 for (INT i
= 0; i
< fBandsAllocated
; i
++)
272 if (fBands
[i
].DeskBand
!= NULL
)
273 FreeBand(&fBands
[i
]);
275 CoTaskMemFree(fBands
);
280 HRESULT STDMETHODCALLTYPE
CBandSiteBase::AddBand(IUnknown
*punk
)
283 struct BandObject
*NewBand
= NULL
;
284 CComPtr
<IDeskBand
> DeskBand
;
285 CComPtr
<IObjectWithSite
> ObjWithSite
;
286 CComPtr
<IOleWindow
> OleWindow
;
287 CComPtr
<IWinEventHandler
> WndEvtHandler
;
292 TRACE("(%p, %p)\n", this, punk
);
294 if (punk
== NULL
|| fRebarWindow
== NULL
)
297 hRet
= punk
->QueryInterface(IID_PPV_ARG(IDeskBand
, &DeskBand
));
298 if (!SUCCEEDED(hRet
) || DeskBand
== NULL
)
300 hRet
= punk
->QueryInterface(IID_PPV_ARG(IObjectWithSite
, &ObjWithSite
));
301 if (!SUCCEEDED(hRet
) || ObjWithSite
== NULL
)
303 hRet
= punk
->QueryInterface(IID_PPV_ARG(IOleWindow
, &OleWindow
));
304 if (!SUCCEEDED(hRet
) || OleWindow
== NULL
)
306 hRet
= punk
->QueryInterface(IID_PPV_ARG(IWinEventHandler
, &WndEvtHandler
));
307 if (!SUCCEEDED(hRet
) || WndEvtHandler
== NULL
)
311 if (fBandsAllocated
> fBandsCount
)
313 /* Search for a free band object */
314 for (INT i
= 0; i
< fBandsAllocated
; i
++)
316 if (fBands
[i
].DeskBand
== NULL
)
318 NewBand
= &fBands
[i
];
323 else if (fBandsAllocated
> 0)
325 ASSERT (fBands
!= NULL
);
327 /* Reallocate the band object array */
328 NewAllocated
= fBandsAllocated
+ 8;
329 if (NewAllocated
> 0xFFFF)
330 NewAllocated
= 0xFFFF;
331 if (NewAllocated
== fBandsAllocated
)
333 hRet
= E_OUTOFMEMORY
;
338 NewBand
= static_cast<struct BandObject
*>(CoTaskMemAlloc(NewAllocated
* sizeof(struct BandObject
)));
341 hRet
= E_OUTOFMEMORY
;
345 /* Copy the old array */
346 memcpy(NewBand
, fBands
, fBandsAllocated
* sizeof(struct BandObject
));
348 /* Initialize the added bands */
349 memset(&NewBand
[fBandsAllocated
], 0, (NewAllocated
- fBandsAllocated
) * sizeof(struct BandObject
));
351 fBandsAllocated
= NewAllocated
;
352 CoTaskMemFree(fBands
);
357 ASSERT(fBands
== NULL
);
358 ASSERT(fBandsAllocated
== 0);
359 ASSERT(fBandsCount
== 0);
361 /* Allocate new array */
362 fBands
= static_cast<struct BandObject
*>(CoTaskMemAlloc(8 * sizeof(struct BandObject
)));
365 hRet
= E_OUTOFMEMORY
;
369 /* Initialize the added bands */
370 memset(fBands
, 0, 8 * sizeof(struct BandObject
));
372 fBandsAllocated
+= 8;
373 NewBand
= &fBands
[0];
378 ASSERT(NewBand
!= NULL
);
381 NewBand
->DeskBand
= DeskBand
.Detach();
382 NewBand
->OleWindow
= OleWindow
.Detach();
383 NewBand
->WndEvtHandler
= WndEvtHandler
.Detach();
385 /* Create the ReBar band */
386 hRet
= ObjWithSite
->SetSite(static_cast<IOleWindow
*>(this));
390 if (SUCCEEDED(UpdateSingleBand(NewBand
)))
392 if (NewBand
->dbi
.dwMask
& DBIM_MODEFLAGS
)
394 if (NewBand
->dbi
.dwModeFlags
& DBIMF_ADDTOFRONT
)
399 BuildRebarBandInfo(NewBand
, &rbi
);
401 if (SUCCEEDED(NewBand
->OleWindow
->GetWindow(&rbi
.hwndChild
)) &&
402 rbi
.hwndChild
!= NULL
)
404 rbi
.fMask
|= RBBIM_CHILD
;
405 WARN ("ReBar band uses child window 0x%p\n", rbi
.hwndChild
);
408 if (!SendMessageW(fRebarWindow
, RB_INSERTBANDW
, (WPARAM
)uBand
, reinterpret_cast<LPARAM
>(&rbi
)))
411 hRet
= (HRESULT
)((USHORT
)GetBandID(NewBand
));
415 WARN("IBandSite::AddBand(): Call to IDeskBand::SetSite() failed: %x\n", hRet
);
417 /* Remove the band from the ReBar control */
418 BuildRebarBandInfo(NewBand
, &rbi
);
419 uBand
= (UINT
)SendMessageW(fRebarWindow
, RB_IDTOINDEX
, (WPARAM
)rbi
.wID
, 0);
420 if (uBand
!= (UINT
)-1)
422 if (!SendMessageW(fRebarWindow
, RB_DELETEBAND
, (WPARAM
)uBand
, 0))
424 ERR("Failed to delete band!\n");
428 ERR("Failed to map band id to index!\n");
440 HRESULT STDMETHODCALLTYPE
CBandSiteBase::EnumBands(UINT uBand
, DWORD
*pdwBandID
)
444 TRACE("(%p, %u, %p)\n", this, uBand
, pdwBandID
);
446 if (uBand
== 0xffffffff)
447 return (UINT
)fBandsCount
;
449 if (uBand
>= (UINT
)fBandsCount
)
452 for (i
= 0; i
< (DWORD
)fBandsAllocated
; i
++)
454 if (fBands
[i
].DeskBand
!= NULL
)
469 HRESULT STDMETHODCALLTYPE
CBandSiteBase::QueryBand(DWORD dwBandID
, IDeskBand
**ppstb
,
470 DWORD
*pdwState
, LPWSTR pszName
, int cchName
)
472 struct BandObject
*Band
;
474 TRACE("(%p, %u, %p, %p, %p, %d)\n", this, dwBandID
, ppstb
, pdwState
, pszName
, cchName
);
476 Band
= GetBandByID(dwBandID
);
482 Band
->DeskBand
->AddRef();
483 *ppstb
= Band
->DeskBand
;
486 if (pdwState
!= NULL
)
488 FIXME("IBandSite::QueryBand() requests band state!\n");
492 if (pszName
!= NULL
&& cchName
> 0)
494 FIXME("IBandSite::QueryBand() requests band name!\n");
500 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetBandState(DWORD dwBandID
, DWORD dwMask
, DWORD dwState
)
502 struct BandObject
*Band
;
504 TRACE("(%p, %u, %x, %x)\n", this, dwBandID
, dwMask
, dwState
);
506 Band
= GetBandByID(dwBandID
);
514 HRESULT STDMETHODCALLTYPE
CBandSiteBase::RemoveBand(DWORD dwBandID
)
516 struct BandObject
*Band
;
519 TRACE("(%p, %u)\n", this, dwBandID
);
521 if (fRebarWindow
== NULL
)
524 Band
= GetBandByID(dwBandID
);
528 uBand
= (UINT
)SendMessageW(fRebarWindow
, RB_IDTOINDEX
, (WPARAM
)GetBandID(Band
), 0);
529 if (uBand
!= (UINT
)-1)
531 if (!SendMessageW(fRebarWindow
, RB_DELETEBAND
, (WPARAM
)uBand
, 0))
533 ERR("Could not delete band!\n");
537 ERR("Could not map band id to index!\n");
543 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetBandObject(DWORD dwBandID
, REFIID riid
, VOID
**ppv
)
545 struct BandObject
*Band
;
547 TRACE("(%p, %u, %s, %p)\n", this, dwBandID
, debugstr_guid(&riid
), ppv
);
549 Band
= GetBandByID(dwBandID
);
556 return Band
->DeskBand
->QueryInterface(riid
, ppv
);
559 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetBandSiteInfo(const BANDSITEINFO
*pbsinfo
)
561 FIXME("(%p, %p)\n", this, pbsinfo
);
565 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetBandSiteInfo(BANDSITEINFO
*pbsinfo
)
567 FIXME("(%p, %p)\n", this, pbsinfo
);
571 HRESULT STDMETHODCALLTYPE
CBandSiteBase::OnWinEvent(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*plrResult
)
573 struct BandObject
*Band
;
575 TRACE("(%p, %p, %u, %p, %p, %p)\n", this, hWnd
, uMsg
, wParam
, lParam
, plrResult
);
578 if (fRebarWindow
== NULL
)
581 if (hWnd
== fRebarWindow
)
583 /* FIXME: Just send the message? */
584 *plrResult
= SendMessageW(hWnd
, uMsg
, wParam
, lParam
);
588 Band
= GetBandFromHwnd(hWnd
);
591 return Band
->WndEvtHandler
->OnWinEvent(hWnd
, uMsg
, wParam
, lParam
, plrResult
);
597 HRESULT STDMETHODCALLTYPE
CBandSiteBase::IsWindowOwner(HWND hWnd
)
599 struct BandObject
*Band
;
601 TRACE("(%p, %p)\n", this, hWnd
);
603 if (fRebarWindow
== NULL
)
606 Band
= GetBandFromHwnd(hWnd
);
613 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetWindow(HWND
*phWnd
)
615 TRACE("(%p, %p)\n", this, phWnd
);
617 *phWnd
= fRebarWindow
;
618 if (fRebarWindow
!= NULL
)
624 HRESULT STDMETHODCALLTYPE
CBandSiteBase::ContextSensitiveHelp(BOOL fEnterMode
)
626 FIXME("(%p, %d)\n", this, fEnterMode
);
630 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetDeskBarSite(IUnknown
*pUnk
)
636 TRACE("(%p, %p)\n", this, pUnk
);
638 fOleWindow
.Release();
640 hRet
= pUnk
->QueryInterface(IID_PPV_ARG(IOleWindow
, &fOleWindow
));
641 if (FAILED_UNEXPECTEDLY(hRet
))
644 hRet
= fOleWindow
->GetWindow(&hWndParent
);
645 if (FAILED_UNEXPECTEDLY(hRet
))
648 style
= WS_CHILD
| WS_CLIPSIBLINGS
| WS_CLIPCHILDREN
| RBS_VARHEIGHT
| RBS_AUTOSIZE
|
649 RBS_BANDBORDERS
| CCS_NODIVIDER
| CCS_NORESIZE
| CCS_NOPARENTALIGN
;
651 fRebarWindow
= CreateWindowExW(WS_EX_TOOLWINDOW
,
658 _AtlBaseModule
.GetModuleInstance(),
660 if (fRebarWindow
== NULL
)
662 fOleWindow
.Release();
663 WARN("IDeskbarClient::SetDeskBarSite() failed to create ReBar control!\n");
670 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetModeDBC(DWORD dwMode
)
675 TRACE("(%p, %x)\n", this, dwMode
);
677 if (fRebarWindow
== NULL
)
680 dwStyle
= dwPrevStyle
= GetWindowLongPtr(fRebarWindow
, GWL_STYLE
);
681 if (dwMode
& DBIF_VIEWMODE_VERTICAL
)
684 if (dwMode
& ~DBIF_VIEWMODE_VERTICAL
)
685 FIXME("IDeskBarClient::SetModeDBC() unhandled modes: %x\n", dwStyle
& ~DBIF_VIEWMODE_VERTICAL
);
687 if (dwStyle
!= dwPrevStyle
)
689 SetWindowLongPtr(fRebarWindow
, GWL_STYLE
, dwPrevStyle
);
695 HRESULT STDMETHODCALLTYPE
CBandSiteBase::UIActivateDBC(DWORD dwState
)
697 TRACE("(%p, %x)\n", this, dwState
);
699 if (fRebarWindow
== NULL
)
702 ShowWindow(fRebarWindow
, (dwState
& DBC_SHOW
) ? SW_SHOW
: SW_HIDE
);
703 //FIXME: Properly notify bands?
707 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetSize(DWORD unknown1
, LPRECT unknown2
)
709 FIXME("(%p, %x, %p)\n", this, unknown1
, unknown2
);
713 HRESULT STDMETHODCALLTYPE
CBandSiteBase::QueryStatus(const GUID
*pguidCmdGroup
,
714 DWORD cCmds
, OLECMD
*prgCmds
, OLECMDTEXT
*pCmdText
)
716 FIXME("(%p, %p, %u, %p, %p)\n", this, pguidCmdGroup
, cCmds
, prgCmds
, pCmdText
);
720 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
,
721 DWORD nCmdExecOpt
, VARIANTARG
*pvaIn
, VARIANTARG
*pvaOut
)
725 TRACE("(%p, %p, %u, %u, %p, %p)\n", this, pguidCmdGroup
, nCmdID
, nCmdExecOpt
, pvaIn
, pvaOut
);
727 if (fRebarWindow
== NULL
)
730 if (IsEqualIID(*pguidCmdGroup
, IID_IDeskBand
))
734 case DBID_BANDINFOCHANGED
:
736 hRet
= UpdateAllBands();
739 /* Update a single band */
740 if (pvaIn
->n1
.n2
.vt
== VT_I4
)
741 hRet
= UpdateBand(pvaIn
->n1
.n2
.n3
.lVal
);
748 case DBID_MAXIMIZEBAND
:
749 case DBID_PUSHCHEVRON
:
750 FIXME("IOleCommandTarget::Exec(): Unsupported command ID %d\n", nCmdID
);
758 WARN("IOleCommandTarget::Exec(): Unsupported command group GUID\n");
763 HRESULT STDMETHODCALLTYPE
CBandSiteBase::UIActivateIO(BOOL fActivate
, LPMSG lpMsg
)
768 HRESULT STDMETHODCALLTYPE
CBandSiteBase::HasFocusIO()
773 HRESULT STDMETHODCALLTYPE
CBandSiteBase::TranslateAcceleratorIO(LPMSG lpMsg
)
778 HRESULT STDMETHODCALLTYPE
CBandSiteBase::OnFocusChangeIS(struct IUnknown
*paramC
, int param10
)
783 HRESULT STDMETHODCALLTYPE
CBandSiteBase::QueryService(REFGUID guidService
, REFIID riid
, void **ppvObject
)
788 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetClassID(CLSID
*pClassID
)
793 HRESULT STDMETHODCALLTYPE
CBandSiteBase::IsDirty()
798 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Load(IStream
*pStm
)
803 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Save(IStream
*pStm
, BOOL fClearDirty
)
808 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetSizeMax(ULARGE_INTEGER
*pcbSize
)
813 HRESULT STDMETHODCALLTYPE
CBandSiteBase::DragEnter(
814 IDataObject
*pDataObj
, DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
)
819 HRESULT STDMETHODCALLTYPE
CBandSiteBase::DragOver(DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
)
824 HRESULT STDMETHODCALLTYPE
CBandSiteBase::DragLeave()
829 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Drop(IDataObject
*pDataObj
, DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
)
834 HRESULT STDMETHODCALLTYPE
CBandSiteBase::LoadFromStreamBS(IStream
*, const GUID
&, void **)
839 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SaveToStreamBS(IUnknown
*, IStream
*)