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 #include <shlobj_undoc.h>
26 #include <shlguid_undoc.h>
32 #include "wine/debug.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(browseui
);
38 #define ASSERT(cond) \
40 ERR ("ASSERTION %s AT %s:%d FAILED!\n", #cond, __FILE__, __LINE__)
43 CBandSiteBase::CBandSiteBase()
51 UINT
CBandSiteBase::GetBandID(struct BandObject
*Band
)
53 return (UINT
)(Band
- fBands
);
56 struct CBandSiteBase::BandObject
*CBandSiteBase::GetBandByID(DWORD dwBandID
)
58 if ((LONG
)dwBandID
>= fBandsAllocated
)
61 if (fBands
[dwBandID
].DeskBand
== NULL
)
64 return &fBands
[dwBandID
];
67 void CBandSiteBase::FreeBand(struct BandObject
*Band
)
69 ATLASSERT(Band
->DeskBand
!= NULL
);
70 ATLASSERT(Band
->OleWindow
!= NULL
);
71 ATLASSERT(Band
->WndEvtHandler
!= NULL
);
72 Band
->DeskBand
->Release();
73 Band
->OleWindow
->Release();
74 Band
->WndEvtHandler
->Release();
75 memset(Band
, 0, sizeof(*Band
));
79 DWORD
CBandSiteBase::GetBandSiteViewMode()
83 /* FIXME: What about DBIF_VIEWMODE_FLOATING and DBIF_VIEWMODE_TRANSPARENT? */
84 dwStyle
= GetWindowLongPtr(fRebarWindow
, GWL_STYLE
);
86 if (dwStyle
& CCS_VERT
)
87 return DBIF_VIEWMODE_VERTICAL
;
89 return DBIF_VIEWMODE_NORMAL
;
92 VOID
CBandSiteBase::BuildRebarBandInfo(struct BandObject
*Band
, REBARBANDINFOW
*prbi
)
94 memset(prbi
, 0, sizeof(*prbi
));
95 prbi
->cbSize
= sizeof(*prbi
);
97 prbi
->fMask
= RBBIM_ID
;
98 prbi
->wID
= GetBandID(Band
);
100 if (Band
->dbi
.dwMask
& DBIM_MINSIZE
)
102 prbi
->fMask
|= RBBIM_CHILDSIZE
;
103 prbi
->cxMinChild
= Band
->dbi
.ptMinSize
.x
;
104 prbi
->cyMinChild
= Band
->dbi
.ptMinSize
.y
;
107 if (Band
->dbi
.dwMask
& DBIM_MAXSIZE
)
109 prbi
->fMask
|= RBBIM_CHILDSIZE
;
110 prbi
->cyMaxChild
= Band
->dbi
.ptMaxSize
.y
;
113 if ((Band
->dbi
.dwMask
& (DBIM_INTEGRAL
| DBIM_MODEFLAGS
)) == (DBIM_INTEGRAL
| DBIM_MODEFLAGS
) &&
114 (Band
->dbi
.dwModeFlags
& DBIMF_VARIABLEHEIGHT
))
116 prbi
->fMask
|= RBBIM_CHILDSIZE
;
117 prbi
->cyIntegral
= Band
->dbi
.ptIntegral
.y
;
120 if (Band
->dbi
.dwMask
& DBIM_ACTUAL
)
122 prbi
->fMask
|= RBBIM_IDEALSIZE
| RBBIM_SIZE
| RBBIM_CHILDSIZE
;
123 prbi
->cxIdeal
= Band
->dbi
.ptActual
.x
;
124 prbi
->cx
= Band
->dbi
.ptActual
.x
;
125 prbi
->cyChild
= Band
->dbi
.ptActual
.y
;
128 if (Band
->dbi
.dwMask
& DBIM_TITLE
)
130 prbi
->fMask
|= RBBIM_TEXT
;
131 prbi
->lpText
= Band
->dbi
.wszTitle
;
132 prbi
->cch
= wcslen(Band
->dbi
.wszTitle
);
135 if (Band
->dbi
.dwMask
& DBIM_MODEFLAGS
)
137 prbi
->fMask
|= RBBIM_STYLE
;
139 if (Band
->dbi
.dwModeFlags
& DBIMF_FIXED
)
140 prbi
->fStyle
|= RBBS_FIXEDSIZE
| RBBS_NOGRIPPER
;
141 if (Band
->dbi
.dwModeFlags
& DBIMF_FIXEDBMP
)
142 prbi
->fStyle
|= RBBS_FIXEDBMP
;
143 if (Band
->dbi
.dwModeFlags
& DBIMF_VARIABLEHEIGHT
)
144 prbi
->fStyle
|= RBBS_VARIABLEHEIGHT
;
145 if (Band
->dbi
.dwModeFlags
& DBIMF_DEBOSSED
)
146 prbi
->fStyle
|= RBBS_CHILDEDGE
;
147 if (Band
->dbi
.dwModeFlags
& DBIMF_USECHEVRON
)
148 prbi
->fStyle
|= RBBS_USECHEVRON
;
149 if (Band
->dbi
.dwModeFlags
& DBIMF_BREAK
)
150 prbi
->fStyle
|= RBBS_BREAK
;
151 if (Band
->dbi
.dwModeFlags
& DBIMF_TOPALIGN
)
152 prbi
->fStyle
|= RBBS_TOPALIGN
;
153 if (Band
->dbi
.dwModeFlags
& DBIMF_NOGRIPPER
)
154 prbi
->fStyle
|= RBBS_NOGRIPPER
;
155 if (Band
->dbi
.dwModeFlags
& DBIMF_ALWAYSGRIPPER
)
156 prbi
->fStyle
|= RBBS_GRIPPERALWAYS
;
159 if ((Band
->dbi
.dwMask
& (DBIM_BKCOLOR
| DBIM_MODEFLAGS
)) == (DBIM_BKCOLOR
| DBIM_MODEFLAGS
) &&
160 (Band
->dbi
.dwModeFlags
& DBIMF_BKCOLOR
))
162 prbi
->fMask
|= RBBIM_COLORS
;
163 prbi
->clrFore
= (COLORREF
)(COLOR_WINDOWTEXT
+ 1);
164 prbi
->clrBack
= Band
->dbi
.crBkgnd
;
168 HRESULT
CBandSiteBase::UpdateSingleBand(struct BandObject
*Band
)
175 memset(&Band
->dbi
, 0, sizeof(Band
->dbi
));
176 Band
->dbi
.dwMask
= DBIM_MINSIZE
| DBIM_MAXSIZE
| DBIM_INTEGRAL
|
177 DBIM_ACTUAL
| DBIM_TITLE
| DBIM_MODEFLAGS
| DBIM_BKCOLOR
;
179 dwViewMode
= GetBandSiteViewMode();
181 hRet
= Band
->DeskBand
->GetBandInfo((DWORD
)GetBandID(Band
), dwViewMode
, &Band
->dbi
);
184 BuildRebarBandInfo(Band
, &rbi
);
185 if (SUCCEEDED(Band
->OleWindow
->GetWindow(&rbi
.hwndChild
)) &&
186 rbi
.hwndChild
!= NULL
)
188 rbi
.fMask
|= RBBIM_CHILD
;
189 WARN ("ReBar band uses child window 0x%p\n", rbi
.hwndChild
);
192 uBand
= (UINT
)SendMessageW(fRebarWindow
, RB_IDTOINDEX
, (WPARAM
)rbi
.wID
, 0);
193 if (uBand
!= (UINT
)-1)
195 if (!SendMessageW(fRebarWindow
, RB_SETBANDINFOW
, (WPARAM
)uBand
, (LPARAM
)&rbi
))
197 WARN("Failed to update the rebar band!\n");
201 WARN("Failed to map rebar band id to index!\n");
208 HRESULT
CBandSiteBase::UpdateAllBands()
213 for (i
= 0; i
< fBandsAllocated
; i
++)
215 if (fBands
[i
].DeskBand
!= NULL
)
217 hRet
= UpdateSingleBand(&fBands
[i
]);
218 if (!SUCCEEDED(hRet
))
226 HRESULT
CBandSiteBase::UpdateBand(DWORD dwBandID
)
228 struct BandObject
*Band
;
230 Band
= GetBandByID(dwBandID
);
234 return UpdateSingleBand(Band
);
237 struct CBandSiteBase::BandObject
*CBandSiteBase::GetBandFromHwnd(HWND hwnd
)
243 for (i
= 0; i
< fBandsAllocated
; i
++)
245 if (fBands
[i
].DeskBand
!= NULL
)
247 ASSERT(fBands
[i
].OleWindow
);
250 hRet
= fBands
[i
].OleWindow
->GetWindow(&hWndBand
);
251 if (SUCCEEDED(hRet
) && hWndBand
== hwnd
)
259 CBandSiteBase::~CBandSiteBase()
263 TRACE("destroying %p\n", this);
265 if (fRebarWindow
!= NULL
)
267 DestroyWindow(fRebarWindow
);
273 for (i
= 0; i
< fBandsAllocated
; i
++)
275 if (fBands
[i
].DeskBand
!= NULL
)
276 FreeBand(&fBands
[i
]);
278 CoTaskMemFree(fBands
);
283 HRESULT STDMETHODCALLTYPE
CBandSiteBase::AddBand(IUnknown
*punk
)
287 struct BandObject
*NewBand
= NULL
;
288 CComPtr
<IDeskBand
> DeskBand
;
289 CComPtr
<IObjectWithSite
> ObjWithSite
;
290 CComPtr
<IOleWindow
> OleWindow
;
291 CComPtr
<IWinEventHandler
> WndEvtHandler
;
296 TRACE("(%p, %p)\n", this, punk
);
298 if (punk
== NULL
|| fRebarWindow
== NULL
)
301 hRet
= punk
->QueryInterface(IID_IDeskBand
, (PVOID
*)&DeskBand
);
302 if (!SUCCEEDED(hRet
) || DeskBand
== NULL
)
304 hRet
= punk
->QueryInterface(IID_IObjectWithSite
, (PVOID
*)&ObjWithSite
);
305 if (!SUCCEEDED(hRet
) || ObjWithSite
== NULL
)
307 hRet
= punk
->QueryInterface(IID_IOleWindow
, (PVOID
*)&OleWindow
);
308 if (!SUCCEEDED(hRet
) || OleWindow
== NULL
)
310 hRet
= punk
->QueryInterface(IID_IWinEventHandler
, (PVOID
*)&WndEvtHandler
);
311 if (!SUCCEEDED(hRet
) || WndEvtHandler
== NULL
)
315 if (fBandsAllocated
> fBandsCount
)
317 /* Search for a free band object */
318 for (i
= 0; i
< fBandsAllocated
; i
++)
320 if (fBands
[i
].DeskBand
== NULL
)
322 NewBand
= &fBands
[i
];
327 else if (fBandsAllocated
> 0)
329 ASSERT (fBands
!= NULL
);
331 /* Reallocate the band object array */
332 NewAllocated
= fBandsAllocated
+ 8;
333 if (NewAllocated
> 0xFFFF)
334 NewAllocated
= 0xFFFF;
335 if (NewAllocated
== fBandsAllocated
)
337 hRet
= E_OUTOFMEMORY
;
342 NewBand
= reinterpret_cast<struct BandObject
*>(CoTaskMemAlloc(NewAllocated
* sizeof(struct BandObject
)));
345 hRet
= E_OUTOFMEMORY
;
349 /* Copy the old array */
350 memcpy(NewBand
, fBands
, fBandsAllocated
* sizeof(struct BandObject
));
352 /* Initialize the added bands */
353 memset(&NewBand
[fBandsAllocated
], 0, (NewAllocated
- fBandsAllocated
) * sizeof(struct BandObject
));
355 NewBand
= &fBands
[fBandsAllocated
];
356 fBandsAllocated
= NewAllocated
;
357 CoTaskMemFree(fBands
);
362 ASSERT(fBands
== NULL
);
363 ASSERT(fBandsAllocated
== 0);
364 ASSERT(fBandsCount
== 0);
366 /* Allocate new array */
367 fBands
= reinterpret_cast<struct BandObject
*>(CoTaskMemAlloc(8 * sizeof(struct BandObject
)));
370 hRet
= E_OUTOFMEMORY
;
374 /* Initialize the added bands */
375 memset(fBands
, 0, 8 * sizeof(struct BandObject
));
377 fBandsAllocated
+= 8;
378 NewBand
= &fBands
[0];
383 ASSERT(NewBand
!= NULL
);
386 NewBand
->DeskBand
= DeskBand
.Detach();
387 NewBand
->OleWindow
= OleWindow
.Detach();
388 NewBand
->WndEvtHandler
= WndEvtHandler
.Detach();
390 /* Create the ReBar band */
391 hRet
= ObjWithSite
->SetSite((IOleWindow
*)this);
395 if (SUCCEEDED(UpdateSingleBand(NewBand
)))
397 if (NewBand
->dbi
.dwMask
& DBIM_MODEFLAGS
)
399 if (NewBand
->dbi
.dwModeFlags
& DBIMF_ADDTOFRONT
)
404 BuildRebarBandInfo(NewBand
, &rbi
);
406 if (SUCCEEDED(NewBand
->OleWindow
->GetWindow(&rbi
.hwndChild
)) &&
407 rbi
.hwndChild
!= NULL
)
409 rbi
.fMask
|= RBBIM_CHILD
;
410 WARN ("ReBar band uses child window 0x%p\n", rbi
.hwndChild
);
413 if (!SendMessageW(fRebarWindow
, RB_INSERTBANDW
, (WPARAM
)uBand
, (LPARAM
)&rbi
))
416 hRet
= (HRESULT
)((USHORT
)GetBandID(NewBand
));
420 WARN("IBandSite::AddBand(): Call to IDeskBand::SetSite() failed: %x\n", hRet
);
422 /* Remove the band from the ReBar control */
423 uBand
= (UINT
)SendMessageW(fRebarWindow
, RB_IDTOINDEX
, (WPARAM
)rbi
.wID
, 0);
424 if (uBand
!= (UINT
)-1)
426 if (!SendMessageW(fRebarWindow
, RB_DELETEBAND
, (WPARAM
)uBand
, 0))
428 ERR("Failed to delete band!\n");
432 ERR("Failed to map band id to index!\n");
444 HRESULT STDMETHODCALLTYPE
CBandSiteBase::EnumBands(UINT uBand
, DWORD
*pdwBandID
)
448 TRACE("(%p, %u, %p)\n", this, uBand
, pdwBandID
);
450 if (uBand
== 0xffffffff)
451 return (UINT
)fBandsCount
;
453 if (uBand
>= (UINT
)fBandsCount
)
456 for (i
= 0; i
< (DWORD
)fBandsAllocated
; i
++)
458 if (fBands
[i
].DeskBand
!= NULL
)
473 HRESULT STDMETHODCALLTYPE
CBandSiteBase::QueryBand(DWORD dwBandID
, IDeskBand
**ppstb
, DWORD
*pdwState
, LPWSTR pszName
, int cchName
)
475 struct BandObject
*Band
;
477 TRACE("(%p, %u, %p, %p, %p, %d)\n", this, dwBandID
, ppstb
, pdwState
, pszName
, cchName
);
479 Band
= GetBandByID(dwBandID
);
485 Band
->DeskBand
->AddRef();
486 *ppstb
= Band
->DeskBand
;
489 if (pdwState
!= NULL
)
491 FIXME("IBandSite::QueryBand() requests band state!\n");
495 if (pszName
!= NULL
&& cchName
> 0)
497 FIXME("IBandSite::QueryBand() requests band name!\n");
503 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetBandState(DWORD dwBandID
, DWORD dwMask
, DWORD dwState
)
505 struct BandObject
*Band
;
507 TRACE("(%p, %u, %x, %x)\n", this, dwBandID
, dwMask
, dwState
);
509 Band
= GetBandByID(dwBandID
);
517 HRESULT STDMETHODCALLTYPE
CBandSiteBase::RemoveBand(DWORD dwBandID
)
519 struct BandObject
*Band
;
522 TRACE("(%p, %u)\n", this, dwBandID
);
524 if (fRebarWindow
== NULL
)
527 Band
= GetBandByID(dwBandID
);
531 uBand
= (UINT
)SendMessageW(fRebarWindow
, RB_IDTOINDEX
, (WPARAM
)GetBandID(Band
), 0);
532 if (uBand
!= (UINT
)-1)
534 if (!SendMessageW(fRebarWindow
, RB_DELETEBAND
, (WPARAM
)uBand
, 0))
536 ERR("Could not delete band!\n");
540 ERR("Could not map band id to index!\n");
546 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetBandObject(DWORD dwBandID
, REFIID riid
, VOID
**ppv
)
548 struct BandObject
*Band
;
550 TRACE("(%p, %u, %s, %p)\n", this, dwBandID
, debugstr_guid(&riid
), ppv
);
552 Band
= GetBandByID(dwBandID
);
559 return Band
->DeskBand
->QueryInterface(riid
, ppv
);
562 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetBandSiteInfo(const BANDSITEINFO
*pbsinfo
)
564 FIXME("(%p, %p)\n", this, pbsinfo
);
568 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetBandSiteInfo(BANDSITEINFO
*pbsinfo
)
570 FIXME("(%p, %p)\n", this, pbsinfo
);
574 HRESULT STDMETHODCALLTYPE
CBandSiteBase::OnWinEvent(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*plrResult
)
576 struct BandObject
*Band
;
578 TRACE("(%p, %p, %u, %p, %p, %p)\n", this, hWnd
, uMsg
, wParam
, lParam
, plrResult
);
581 if (fRebarWindow
== NULL
)
584 if (hWnd
== fRebarWindow
)
586 /* FIXME: Just send the message? */
587 *plrResult
= SendMessageW(hWnd
, uMsg
, wParam
, lParam
);
591 Band
= GetBandFromHwnd(hWnd
);
594 return Band
->WndEvtHandler
->OnWinEvent(hWnd
, uMsg
, wParam
, lParam
, plrResult
);
600 HRESULT STDMETHODCALLTYPE
CBandSiteBase::IsWindowOwner(HWND hWnd
)
602 struct BandObject
*Band
;
604 TRACE("(%p, %p)\n", this, hWnd
);
606 if (fRebarWindow
== NULL
)
609 Band
= GetBandFromHwnd(hWnd
);
616 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetWindow(HWND
*phWnd
)
618 TRACE("(%p, %p)\n", this, phWnd
);
620 *phWnd
= fRebarWindow
;
621 if (fRebarWindow
!= NULL
)
627 HRESULT STDMETHODCALLTYPE
CBandSiteBase::ContextSensitiveHelp(BOOL fEnterMode
)
629 FIXME("(%p, %d)\n", this, fEnterMode
);
633 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetDeskBarSite(IUnknown
*pUnk
)
638 TRACE("(%p, %p)\n", this, pUnk
);
640 fOleWindow
.Release();
642 hRet
= pUnk
->QueryInterface(IID_IOleWindow
, (PVOID
*)&fOleWindow
);
643 if (!SUCCEEDED(hRet
))
646 hRet
= fOleWindow
->GetWindow(&hWndParent
);
647 if (!SUCCEEDED(hRet
))
650 fRebarWindow
= CreateWindowExW(WS_EX_TOOLWINDOW
,
653 WS_CHILD
| WS_CLIPSIBLINGS
|
654 WS_CLIPCHILDREN
| RBS_VARHEIGHT
|
655 RBS_BANDBORDERS
| CCS_NODIVIDER
|
656 CCS_NORESIZE
| CCS_NOPARENTALIGN
,
663 _AtlBaseModule
.GetModuleInstance(),
665 if (fRebarWindow
== NULL
)
667 fOleWindow
.Release();
668 WARN("IDeskbarClient::SetDeskBarSite() failed to create ReBar control!\n");
675 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SetModeDBC(DWORD dwMode
)
680 TRACE("(%p, %x)\n", this, dwMode
);
682 if (fRebarWindow
== NULL
)
685 dwStyle
= dwPrevStyle
= GetWindowLongPtr(fRebarWindow
, GWL_STYLE
);
686 if (dwMode
& DBIF_VIEWMODE_VERTICAL
)
689 if (dwMode
& ~DBIF_VIEWMODE_VERTICAL
)
690 FIXME("IDeskBarClient::SetModeDBC() unhandled modes: %x\n", dwStyle
& ~DBIF_VIEWMODE_VERTICAL
);
692 if (dwStyle
!= dwPrevStyle
)
694 SetWindowLongPtr(fRebarWindow
, GWL_STYLE
, dwPrevStyle
);
700 HRESULT STDMETHODCALLTYPE
CBandSiteBase::UIActivateDBC(DWORD dwState
)
702 TRACE("(%p, %x)\n", this, dwState
);
704 if (fRebarWindow
== NULL
)
707 ShowWindow(fRebarWindow
, (dwState
& DBC_SHOW
) ? SW_SHOW
: SW_HIDE
);
708 FIXME("IDeskBarClient::UIActivateDBC() Properly notify bands?\n");
712 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetSize(DWORD unknown1
, LPRECT unknown2
)
714 FIXME("(%p, %x, %p)\n", this, unknown1
, unknown2
);
718 HRESULT STDMETHODCALLTYPE
CBandSiteBase::QueryStatus(const GUID
*pguidCmdGroup
, DWORD cCmds
, OLECMD
*prgCmds
, OLECMDTEXT
*pCmdText
)
720 FIXME("(%p, %p, %u, %p, %p)\n", this, pguidCmdGroup
, cCmds
, prgCmds
, pCmdText
);
724 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdExecOpt
, VARIANTARG
*pvaIn
, VARIANTARG
*pvaOut
)
728 TRACE("(%p, %p, %u, %u, %p, %p)\n", this, pguidCmdGroup
, nCmdID
, nCmdExecOpt
, pvaIn
, pvaOut
);
730 if (fRebarWindow
== NULL
)
733 if (IsEqualIID(pguidCmdGroup
, IID_IDeskBand
))
737 case DBID_BANDINFOCHANGED
:
739 hRet
= UpdateAllBands();
742 /* Update a single band */
743 if (pvaIn
->n1
.n2
.vt
== VT_I4
)
744 hRet
= UpdateBand(pvaIn
->n1
.n2
.n3
.lVal
);
751 case DBID_MAXIMIZEBAND
:
752 case DBID_PUSHCHEVRON
:
753 FIXME("IOleCommandTarget::Exec(): Unsupported command ID %d\n", nCmdID
);
761 WARN("IOleCommandTarget::Exec(): Unsupported command group GUID\n");
766 HRESULT STDMETHODCALLTYPE
CBandSiteBase::UIActivateIO(BOOL fActivate
, LPMSG lpMsg
)
771 HRESULT STDMETHODCALLTYPE
CBandSiteBase::HasFocusIO()
776 HRESULT STDMETHODCALLTYPE
CBandSiteBase::TranslateAcceleratorIO(LPMSG lpMsg
)
781 HRESULT STDMETHODCALLTYPE
CBandSiteBase::OnFocusChangeIS(struct IUnknown
*paramC
, int param10
)
786 HRESULT STDMETHODCALLTYPE
CBandSiteBase::QueryService(REFGUID guidService
, REFIID riid
, void **ppvObject
)
791 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetClassID(CLSID
*pClassID
)
796 HRESULT STDMETHODCALLTYPE
CBandSiteBase::IsDirty()
801 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Load(IStream
*pStm
)
806 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Save(IStream
*pStm
, BOOL fClearDirty
)
811 HRESULT STDMETHODCALLTYPE
CBandSiteBase::GetSizeMax(ULARGE_INTEGER
*pcbSize
)
816 HRESULT STDMETHODCALLTYPE
CBandSiteBase::DragEnter(IDataObject
*pDataObj
, DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
)
821 HRESULT STDMETHODCALLTYPE
CBandSiteBase::DragOver(DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
)
826 HRESULT STDMETHODCALLTYPE
CBandSiteBase::DragLeave()
831 HRESULT STDMETHODCALLTYPE
CBandSiteBase::Drop(IDataObject
*pDataObj
, DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
)
836 HRESULT STDMETHODCALLTYPE
CBandSiteBase::LoadFromStreamBS(IStream
*, const GUID
&, void **)
841 HRESULT STDMETHODCALLTYPE
CBandSiteBase::SaveToStreamBS(IUnknown
*, IStream
*)