73 lines
2.5 KiB
C++
73 lines
2.5 KiB
C++
#pragma once
|
|
|
|
#include <windows.h>
|
|
#include <shlobj.h> // for IDeskband2, IObjectWithSite, IPesistStream, and IInputObject
|
|
|
|
class CDeskBand : public IDeskBand2,
|
|
public IPersistStream,
|
|
public IObjectWithSite,
|
|
public IInputObject
|
|
{
|
|
public:
|
|
// IUnknown
|
|
STDMETHODIMP QueryInterface(REFIID riid, void** ppv);
|
|
STDMETHODIMP_(ULONG) AddRef();
|
|
STDMETHODIMP_(ULONG) Release();
|
|
|
|
// IOleWindow
|
|
STDMETHODIMP GetWindow(HWND *phwnd);
|
|
STDMETHODIMP ContextSensitiveHelp(BOOL);
|
|
|
|
// IDockingWindow
|
|
STDMETHODIMP ShowDW(BOOL fShow);
|
|
STDMETHODIMP CloseDW(DWORD);
|
|
STDMETHODIMP ResizeBorderDW(const RECT *, IUnknown *, BOOL);
|
|
|
|
// IDeskBand (needed for all deskbands)
|
|
STDMETHODIMP GetBandInfo(DWORD dwBandID, DWORD, DESKBANDINFO *pdbi);
|
|
|
|
// IDeskBand2 (needed for glass deskband)
|
|
STDMETHODIMP CanRenderComposited(BOOL *pfCanRenderComposited);
|
|
STDMETHODIMP SetCompositionState(BOOL fCompositionEnabled);
|
|
STDMETHODIMP GetCompositionState(BOOL *pfCompositionEnabled);
|
|
|
|
// IPersist
|
|
STDMETHODIMP GetClassID(CLSID *pclsid);
|
|
|
|
// IPersistStream
|
|
STDMETHODIMP IsDirty();
|
|
STDMETHODIMP Load(IStream *pStm);
|
|
STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty);
|
|
STDMETHODIMP GetSizeMax(ULARGE_INTEGER *pcbSize);
|
|
|
|
// IObjectWithSite
|
|
STDMETHODIMP SetSite(IUnknown *pUnkSite);
|
|
STDMETHODIMP GetSite(REFIID riid, void **ppv);
|
|
|
|
// IInputObject
|
|
STDMETHODIMP UIActivateIO(BOOL fActivate, MSG *);
|
|
STDMETHODIMP HasFocusIO();
|
|
STDMETHODIMP TranslateAcceleratorIO(MSG *);
|
|
|
|
CDeskBand();
|
|
|
|
protected:
|
|
~CDeskBand();
|
|
|
|
static LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
void OnFocus(const BOOL fFocus);
|
|
void OnPaint(const HDC hdcIn);
|
|
|
|
private:
|
|
LONG m_cRef; // ref count of deskband
|
|
IUnknown *m_pSite; // IObjectWithSite site
|
|
IInputObjectSite *m_pInputObjectSite; // parent site that contains deskband
|
|
BOOL m_fHasFocus; // whether deskband window currently has focus
|
|
BOOL m_fIsDirty; // whether deskband setting has changed
|
|
BOOL m_fCompositionEnabled; // whether glass is currently enabled in deskband
|
|
DWORD m_dwBandID; // ID of deskband
|
|
HWND m_hwnd; // main window of deskband
|
|
HWND m_hwndParent; // parent window of deskband
|
|
};
|
|
|