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
24 WINE_DEFAULT_DEBUG_CHANNEL(browseui
);
27 #define ASSERT(cond) \
29 ERR ("ASSERTION %s AT %s:%d FAILED!\n", #cond, __FILE__, __LINE__)
32 CBandSiteBase::CBandSiteBase()
40 UINT
CBandSiteBase::GetBandID(struct BandObject
*Band
)
42 return (UINT
)(Band
- fBands
);
45 struct CBandSiteBase::BandObject
*CBandSiteBase::GetBandByID(DWORD dwBandID
)
47 if ((LONG
)dwBandID
>= fBandsAllocated
)
50 if (fBands
[dwBandID
].DeskBand
== NULL
)
53 return &fBands
[dwBandID
];
56 void CBandSiteBase::FreeBand(struct BandObject
*Band
)
58 ATLASSERT(Band
->DeskBand
!= NULL
);
59 ATLASSERT(Band
->OleWindow
!= NULL
);
60 ATLASSERT(Band
->WndEvtHandler
!= NULL
);
61 Band
->DeskBand
->Release();
62 Band
->OleWindow
->Release();
63 Band
->WndEvtHandler
->Release();
64 memset(Band
, 0, sizeof(*Band
));
68 DWORD
CBandSiteBase::GetBandSiteViewMode()
72 /* FIXME: What about DBIF_VIEWMODE_FLOATING and DBIF_VIEWMODE_TRANSPARENT? */
73 dwStyle
= GetWindowLongPtr(fRebarWindow
, GWL_STYLE
);
75 if (dwStyle
& CCS_VERT
)
76 return DBIF_VIEWMODE_VERTICAL
;
78 return DBIF_VIEWMODE_NORMAL
;
81 VOID
CBandSiteBase::BuildRebarBandInfo(struct BandObject
*Band
, REBARBANDINFOW
*prbi
)
83 memset(prbi
, 0, sizeof(*prbi
));
84 prbi
->cbSize
= sizeof(*prbi
);
86 prbi
->fMask
= RBBIM_ID
;
87 prbi
->wID
= GetBandID(Band
);
89 if (Band
->dbi
.dwMask
& DBIM_MINSIZE
)
91 prbi
->fMask
|= RBBIM_CHILDSIZE
;
92 prbi
->cxMinChild
= Band
->dbi
.ptMinSize
.x
;
93 prbi
->cyMinChild
= Band
->dbi
.ptMinSize
.y
;
96 if (Band
->dbi
.dwMask
& DBIM_MAXSIZE
)
98 prbi
->fMask
|= RBBIM_CHILDSIZE
;
99 prbi
->cyMaxChild
= Band
->dbi
.ptMaxSize
.y
;
102 if ((Band
->dbi
.dwMask
& (DBIM_INTEGRAL
| DBIM_MODEFLAGS
)) == (DBIM_INTEGRAL
| DBIM_MODEFLAGS
) &&
103 (Band
->dbi
.dwModeFlags
& DBIMF_VARIABLEHEIGHT
))
105 prbi
->fMask
|= RBBIM_CHILDSIZE
;
106 prbi
->cyIntegral
= Band
->dbi
.ptIntegral
.y
;
109 if (Band
->dbi
.dwMask
& DBIM_ACTUAL
)
111 prbi
->fMask
|= RBBIM_IDEALSIZE
| RBBIM_SIZE
| RBBIM_CHILDSIZE
;
112 prbi
->cxIdeal
= Band
->dbi
.ptActual
.x
;
113 prbi
->cx
= Band
->dbi
.ptActual
.x
;
114 prbi
->cyChild
= Band
->dbi
.ptActual
.y
;
117 if (Band
->dbi
.dwMask
& DBIM_TITLE
)
119 prbi
->fMask
|= RBBIM_TEXT
;
120 prbi
->lpText
= Band
->dbi
.wszTitle
;
121 prbi
->cch
= wcslen(Band
->dbi
.wszTitle
);
124 if (Band
->dbi
.dwMask
& DBIM_MODEFLAGS
)
126 prbi
->fMask
|= RBBIM_STYLE
;
128 if (Band
->dbi
.dwModeFlags
& DBIMF_FIXED
)
129 prbi
->fStyle
|= RBBS_FIXEDSIZE
| RBBS_NOGRIPPER
;
130 if (Band
->dbi
.dwModeFlags
& DBIMF_FIXEDBMP
)
131 prbi
->fStyle
|= RBBS_FIXEDBMP
;
132 if (Band
->dbi
.dwModeFlags
& DBIMF_VARIABLEHEIGHT
)
133 prbi
->fStyle
|= RBBS_VARIABLEHEIGHT
;
134 if (Band
->dbi
.dwModeFlags
& DBIMF_DEBOSSED
)
135 prbi
->fStyle
|= RBBS_CHILDEDGE
;
136 if (Band
->dbi
.dwModeFlags
& DBIMF_USECHEVRON
)
137 prbi
->fStyle
|= RBBS_USECHEVRON
;
138 if (Band
->dbi
.dwModeFlags
& DBIMF_BREAK
)
139 prbi
->fStyle
|= RBBS_BREAK
;
140 if (Band
->dbi
.dwModeFlags
& DBIMF_TOPALIGN
)
141 prbi
->fStyle
|= RBBS_TOPALIGN
;
142 if (Band
->dbi
.dwModeFlags
& DBIMF_NOGRIPPER
)
143 prbi
->fStyle
|= RBBS_NOGRIPPER
;
144 if (Band
->dbi
.dwModeFlags
& DBIMF_ALWAYSGRIPPER
)
145 prbi
->fStyle
|= RBBS_GRIPPERALWAYS
;
148 if ((Band
->dbi
.dwMask
& (DBIM_BKCOLOR
| DBIM_MODEFLAGS
)) == (DBIM_BKCOLOR
| DBIM_MODEFLAGS
) &&
149 (Band
->dbi
.dwModeFlags
& DBIMF_BKCOLOR
))
151 prbi
->fMask
|= RBBIM_COLORS
;
152 prbi
->clrFore
= (COLORREF
)(COLOR_WINDOWTEXT
+ 1);
153 prbi
->clrBack
= Band
->dbi
.crBkgnd
;
157 HRESULT
CBandSiteBase::UpdateSingleBand(struct BandObject
*Band
)
164 memset(&Band
->dbi
, 0, sizeof(Band
->dbi
));
165 Band
->dbi
.dwMask
= DBIM_MINSIZE
| DBIM_MAXSIZE
| DBIM_INTEGRAL
|
166 DBIM_ACTUAL
| DBIM_TITLE
| DBIM_MODEFLAGS
| DBIM_BKCOLOR
;
168 dwViewMode
= GetBandSiteViewMode();
170 hRet
= Band
->DeskBand
->GetBandInfo((DWORD
)GetBandID(Band
), dwViewMode
, &Band
->dbi
);
173 BuildRebarBandInfo(Band
, &rbi
);
174 if (SUCCEEDED(Band
->OleWindow
->GetWindow(&rbi
.hwndChild
)) &&
175 rbi
.hwndChild
!= NULL
)
177 rbi
.fMask
|= RBBIM_CHILD
;
178 WARN ("ReBar band uses child window 0x%p\n", rbi
.hwndChild
);
181 uBand
= (UINT
)SendMessageW(fRebarWindow
, RB_IDTOINDEX
, (WPARAM
)rbi
.wID
, 0);
182 if (uBand
!= (UINT
)-1)
184 if (!SendMessageW(fRebarWindow
, RB_SETBANDINFOW
, (WPARAM
)uBand
, (LPARAM
)&rbi
))
186 WARN("Failed to update the rebar band!\n");
190 WARN("Failed to map rebar band id to index!\n");
197 HRESULT
CBandSiteBase::UpdateAllBands()
202 for (i
= 0; i
< fBandsAllocated
; i
++)
204 if (fBands
[i
].DeskBand
!= NULL
)
206 hRet
= UpdateSingleBand(&fBands
[i
]);
207 if (!SUCCEEDED(hRet
))
215 HRESULT
CBandSiteBase::UpdateBand(DWORD dwBandID
)
217 struct BandObject
*Band
;
219 Band
= GetBandByID(dwBandID
);
223 return UpdateSingleBand(Band
);
226 struct CBandSiteBase::BandObject
*CBandSiteBase::GetBandFromHwnd(HWND hwnd
)
232 for (i
= 0; i
< fBandsAllocated
; i
++)
234 if (fBands
[i
].DeskBand
!= NULL
)
236 ASSERT(fBands
[i
].OleWindow
);
239 hRet
= fBands
[i
].OleWindow
->GetWindow(&hWndBand
);
240 if (SUCCEEDED(hRet
) && hWndBand
== hwnd
)
248 CBandSiteBase::~CBandSiteBase()
251 TRACE("destroying %p\n", this);
253 if (fRebarWindow
!= NULL
)
255 DestroyWindow(fRebarWindow
);
262 for (i
= 0; i
< fBandsAllocated
; i
++)
264 if (fBands
[i
].DeskBand
!= NULL
)
265 FreeBand(&fBands
[i
]);
267 CoTaskMemFree(fBands
);
272 HRESULT STDMETHODCALLTYPE
CBandSiteBase::AddBand(IUnknown
*punk
)
276 struct BandObject
*NewBand
= NULL
;
277 CComPtr
<IDeskBand
> DeskBand
;
278 CComPtr
<IObjectWithSite
> ObjWithSite
;
279 CComPtr
<IOleWindow
> OleWindow
;
280 CComPtr
<IWinEventHandler
> WndEvtHandler
;
285 TRACE("(%p, %p)\n", this, punk
);
287 if (punk
== NULL
|| fRebarWindow
== NULL
)
290 hRet
= punk
->QueryInterface(IID_IDeskBand
, (PVOID
*)&DeskBand
);
291 if (!SUCCEEDED(hRet
) || DeskBand
== NULL
)
293 hRet
= punk
->QueryInterface(IID_IObjectWithSite
, (PVOID
*)&ObjWithSite
);
294 if (!SUCCEEDED(hRet
) || ObjWithSite
== NULL
)
296 hRet
= punk
->QueryInterface(IID_IOleWindow
, (PVOID
*)&OleWindow
);
297 if (!SUCCEEDED(hRet
) || OleWindow
== NULL
)
299 hRet
= punk
->QueryInterface(IID_IWinEventHandler
, (PVOID
*)&WndEvtHandler
);
300 if (!SUCCEEDED(hRet
) || WndEvtHandler
== NULL
)
304 if (fBandsAllocated
> fBandsCount
)
306 /* Search for a free band object */
307 for (i
= 0; i
< fBandsAllocated
; i
++)
309 if (fBands
[i
].DeskBand
== NULL
)
311 NewBand
= &fBands
[i
];
316 else if (fBandsAllocated
> 0)
318 ASSERT (fBands
!= NULL
);
320 /* Reallocate the band object array */
321 NewAllocated
= fBandsAllocated
+ 8;
322 if (NewAllocated
> 0xFFFF)
323 NewAllocated
= 0xFFFF;
324 if (NewAllocated
== fBandsAllocated
)
326 hRet
= E_OUTOFMEMORY
;
331 NewBand
= reinterpret_cast<struct BandObject
*>(CoTaskMemAlloc(NewAllocated
* sizeof(struct BandObject
)));
334 hRet
= E_OUTOFMEMORY
;
338 /* Copy the old array */
339 memcpy(NewBand
, fBands
, fBandsAllocated
* sizeof(struct BandObject
));
341 /* Initialize the added bands */
342 memset(&NewBand
[fBandsAllocated
], 0, (NewAllocated
- fBandsAllocated
) * sizeof(struct BandObject
));
344 NewBand
= &fBands
[fBandsAllocated
];
345 fBandsAllocated
= NewAllocated
;
346 CoTaskMemFree(fBands
);
351 ASSERT(fBands
== NULL
);
352 ASSERT(fBandsAllocated
== 0);
353 ASSERT(fBandsCount
== 0);
355 /* Allocate new array */
356 fBands
= reinterpret_cast<struct BandObject
*>(CoTaskMemAlloc(8 * sizeof(struct BandObject
)));
359 hRet
= E_OUTOFMEMORY
;
363 /* Initialize the added bands */
364 memset(fBands
, 0, 8 * sizeof(struct BandObject
));
366 fBandsAllocated
+= 8;
367 NewBand
= &fBands
[0];
372 ASSERT(NewBand
!= NULL
);
375 NewBand
->DeskBand
= DeskBand
.Detach();
376 NewBand
->OleWindow
= OleWindow
.Detach();
377 NewBand
->WndEvtHandler
= WndEvtHandler
.Detach();
379 /* Create the ReBar band */
380 hRet
= ObjWithSite
->SetSite((IOleWindow
*)this);
384 if (SUCCEEDED(UpdateSingleBand(NewBand
)))
386 if (NewBand
->dbi
.dwMask
& DBIM_MODEFLAGS
)
388 if (NewBand
->dbi
.dwModeFlags
& DBIMF_ADDTOFRONT
)
393 BuildRebarBandInfo(NewBand
, &rbi
);
395 if (SUCCEEDED(NewBand
->OleWindow
->GetWindow(&rbi
.hwndChild
)) &&
396 rbi
.hwndChild
!= NULL
)
398 rbi
.fMask
|= RBBIM_CHILD
;
399 WARN ("ReBar band uses child window 0x%p\n", rbi
.hwndChild
);
402 if (!SendMessageW(fRebarWindow
, RB_INSERTBANDW
, (WPARAM
)uBand
, (LPARAM
)&rbi
))
405 hRet
= (HRESULT
)((USHORT
)GetBandID(NewBand
));
409 WARN("IBandSite::AddBand(): Call to IDeskBand::SetSite() failed: %x\n", hRet
);
411 /* Remove the band from the ReBar control */
412 uBand
= (UINT
)SendMessageW(fRebarWindow
, RB_IDTOINDEX
, (WPARAM
)rbi
.wID
, 0);
413 if (uBand
!= (UINT
)-1)
415 if (!SendMessageW(fRebarWindow
, RB_DELETEBAND
, (WPARAM
)uBand
, 0))
417 ERR("Failed to delete band!\n");
421 ERR("Failed to map band id to index!\n");
433 HRESULT STDMETHODCALLTYPE
CBandSiteBase::EnumBands(UINT uBand
, DWORD
*pdwBandID
)
437 TRACE("(%p, %u, %p)\n", this, uBand
, pdwBandID
);
439 if (uBand
== 0xffffffff)
440 return (UINT
)fBandsCount
;
442 if (uBand
>= (UINT
)fBandsCount
)
445 for (i
= 0; i
< (DWORD
)fBandsAllocated
; i
++)
447 if (fBands
[i
].DeskBand
!= NULL
)
462 HRESULT STDMETHODCALLTYPE
CBandSiteBase::QueryBand(DWORD dwBandID
, IDeskBand
**ppstb
, DWORD
*pdwState
, LPWSTR pszName
, int cchName
)
464 struct BandObject
*Band
;
466 TRACE("(%p, %u, %p, %p, %p, %d)\n", this, dwBandID
, ppstb
, pdwState
, pszName
, cchName
);
468 Band
= GetBandByID(dwBandID
);
474 Band
->DeskBand
->AddRef();
475 *ppstb
= Band
->DeskBand
;
478 if (pdwState
!= NULL
)
480 FIXME("IBandSite::QueryBand() requests band state!\n");
484 if (pszName
!= NULL
&& cchName
> 0)
486 FIXME("IBandSite::QueryBand() requests band name!\n");
492 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetBandState(DWORD dwBandID
, DWORD dwMask
, DWORD dwState
)
494 struct BandObject
*Band
;
496 TRACE("(%p, %u, %x, %x)\n", this, dwBandID
, dwMask
, dwState
);
498 Band
= GetBandByID(dwBandID
);
506 HRESULT STDMETHODCALLTYPE
CBandSiteBase::RemoveBand(DWORD dwBandID
)
508 struct BandObject
*Band
;
511 TRACE("(%p, %u)\n", this, dwBandID
);
513 if (fRebarWindow
== NULL
)
516 Band
= GetBandByID(dwBandID
);
520 uBand
= (UINT
)SendMessageW(fRebarWindow
, RB_IDTOINDEX
, (WPARAM
)GetBandID(Band
), 0);
521 if (uBand
!= (UINT
)-1)
523 if (!SendMessageW(fRebarWindow
, RB_DELETEBAND
, (WPARAM
)uBand
, 0))
525 ERR("Could not delete band!\n");
529 ERR("Could not map band id to index!\n");
535 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetBandObject(DWORD dwBandID
, REFIID riid
, VOID
**ppv
)
537 struct BandObject
*Band
;
539 TRACE("(%p, %u, %s, %p)\n", this, dwBandID
, debugstr_guid(&riid
), ppv
);
541 Band
= GetBandByID(dwBandID
);
548 return Band
->DeskBand
->QueryInterface(riid
, ppv
);
551 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetBandSiteInfo(const BANDSITEINFO
*pbsinfo
)
553 FIXME("(%p, %p)\n", this, pbsinfo
);
557 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetBandSiteInfo(BANDSITEINFO
*pbsinfo
)
559 FIXME("(%p, %p)\n", this, pbsinfo
);
563 HRESULT STDMETHODCALLTYPE
CBandSiteBase::OnWinEvent(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*plrResult
)
565 struct BandObject
*Band
;
567 TRACE("(%p, %p, %u, %p, %p, %p)\n", this, hWnd
, uMsg
, wParam
, lParam
, plrResult
);
570 if (fRebarWindow
== NULL
)
573 if (hWnd
== fRebarWindow
)
575 /* FIXME: Just send the message? */
576 *plrResult
= SendMessageW(hWnd
, uMsg
, wParam
, lParam
);
580 Band
= GetBandFromHwnd(hWnd
);
583 return Band
->WndEvtHandler
->OnWinEvent(hWnd
, uMsg
, wParam
, lParam
, plrResult
);
589 HRESULT STDMETHODCALLTYPE
CBandSiteBase::IsWindowOwner(HWND hWnd
)
591 struct BandObject
*Band
;
593 TRACE("(%p, %p)\n", this, hWnd
);
595 if (fRebarWindow
== NULL
)
598 Band
= GetBandFromHwnd(hWnd
);
605 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetWindow(HWND
*phWnd
)
607 TRACE("(%p, %p)\n", this, phWnd
);
609 *phWnd
= fRebarWindow
;
610 if (fRebarWindow
!= NULL
)
616 HRESULT STDMETHODCALLTYPE
CBandSiteBase::ContextSensitiveHelp(BOOL fEnterMode
)
618 FIXME("(%p, %d)\n", this, fEnterMode
);
622 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetDeskBarSite(IUnknown
*pUnk
)
627 TRACE("(%p, %p)\n", this, pUnk
);
629 fOleWindow
.Release();
631 hRet
= pUnk
->QueryInterface(IID_IOleWindow
, (PVOID
*)&fOleWindow
);
632 if (!SUCCEEDED(hRet
))
635 hRet
= fOleWindow
->GetWindow(&hWndParent
);
636 if (!SUCCEEDED(hRet
))
639 fRebarWindow
= CreateWindowExW(WS_EX_TOOLWINDOW
,
642 WS_CHILD
| WS_CLIPSIBLINGS
|
643 WS_CLIPCHILDREN
| RBS_VARHEIGHT
|
644 RBS_BANDBORDERS
| CCS_NODIVIDER
|
645 CCS_NORESIZE
| CCS_NOPARENTALIGN
,
652 _AtlBaseModule
.GetModuleInstance(),
654 if (fRebarWindow
== NULL
)
656 fOleWindow
.Release();
657 WARN("IDeskbarClient::SetDeskBarSite() failed to create ReBar control!\n");
664 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetModeDBC(DWORD dwMode
)
669 TRACE("(%p, %x)\n", this, dwMode
);
671 if (fRebarWindow
== NULL
)
674 dwStyle
= dwPrevStyle
= GetWindowLongPtr(fRebarWindow
, GWL_STYLE
);
675 if (dwMode
& DBIF_VIEWMODE_VERTICAL
)
678 if (dwMode
& ~DBIF_VIEWMODE_VERTICAL
)
679 FIXME("IDeskBarClient::SetModeDBC() unhandled modes: %x\n", dwStyle
& ~DBIF_VIEWMODE_VERTICAL
);
681 if (dwStyle
!= dwPrevStyle
)
683 SetWindowLongPtr(fRebarWindow
, GWL_STYLE
, dwPrevStyle
);
689 HRESULT STDMETHODCALLTYPE
CBandSiteBase::UIActivateDBC(DWORD dwState
)
691 TRACE("(%p, %x)\n", this, dwState
);
693 if (fRebarWindow
== NULL
)
696 ShowWindow(fRebarWindow
, (dwState
& DBC_SHOW
) ? SW_SHOW
: SW_HIDE
);
697 FIXME("IDeskBarClient::UIActivateDBC() Properly notify bands?\n");
701 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetSize(DWORD unknown1
, LPRECT unknown2
)
703 FIXME("(%p, %x, %p)\n", this, unknown1
, unknown2
);
707 HRESULT STDMETHODCALLTYPE
CBandSiteBase::QueryStatus(const GUID
*pguidCmdGroup
, DWORD cCmds
, OLECMD
*prgCmds
, OLECMDTEXT
*pCmdText
)
709 FIXME("(%p, %p, %u, %p, %p)\n", this, pguidCmdGroup
, cCmds
, prgCmds
, pCmdText
);
713 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdExecOpt
, VARIANTARG
*pvaIn
, VARIANTARG
*pvaOut
)
717 TRACE("(%p, %p, %u, %u, %p, %p)\n", this, pguidCmdGroup
, nCmdID
, nCmdExecOpt
, pvaIn
, pvaOut
);
719 if (fRebarWindow
== NULL
)
722 if (IsEqualIID(*pguidCmdGroup
, IID_IDeskBand
))
726 case DBID_BANDINFOCHANGED
:
728 hRet
= UpdateAllBands();
731 /* Update a single band */
732 if (pvaIn
->n1
.n2
.vt
== VT_I4
)
733 hRet
= UpdateBand(pvaIn
->n1
.n2
.n3
.lVal
);
740 case DBID_MAXIMIZEBAND
:
741 case DBID_PUSHCHEVRON
:
742 FIXME("IOleCommandTarget::Exec(): Unsupported command ID %d\n", nCmdID
);
750 WARN("IOleCommandTarget::Exec(): Unsupported command group GUID\n");
755 HRESULT STDMETHODCALLTYPE
CBandSiteBase::UIActivateIO(BOOL fActivate
, LPMSG lpMsg
)
760 HRESULT STDMETHODCALLTYPE
CBandSiteBase::HasFocusIO()
765 HRESULT STDMETHODCALLTYPE
CBandSiteBase::TranslateAcceleratorIO(LPMSG lpMsg
)
770 HRESULT STDMETHODCALLTYPE
CBandSiteBase::OnFocusChangeIS(struct IUnknown
*paramC
, int param10
)
775 HRESULT STDMETHODCALLTYPE
CBandSiteBase::QueryService(REFGUID guidService
, REFIID riid
, void **ppvObject
)
780 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetClassID(CLSID
*pClassID
)
785 HRESULT STDMETHODCALLTYPE
CBandSiteBase::IsDirty()
790 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Load(IStream
*pStm
)
795 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Save(IStream
*pStm
, BOOL fClearDirty
)
800 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetSizeMax(ULARGE_INTEGER
*pcbSize
)
805 HRESULT STDMETHODCALLTYPE
CBandSiteBase::DragEnter(IDataObject
*pDataObj
, DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
)
810 HRESULT STDMETHODCALLTYPE
CBandSiteBase::DragOver(DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
)
815 HRESULT STDMETHODCALLTYPE
CBandSiteBase::DragLeave()
820 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Drop(IDataObject
*pDataObj
, DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
)
825 HRESULT STDMETHODCALLTYPE
CBandSiteBase::LoadFromStreamBS(IStream
*, const GUID
&, void **)
830 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SaveToStreamBS(IUnknown
*, IStream
*)