winamp/Src/omBrowser/toolbarItem.h
2024-09-24 14:54:57 +02:00

107 lines
3.3 KiB
C++

#ifndef NULLSOFT_WINAMP_OMBROWSER_TOOLBARITEM_HEADER
#define NULLSOFT_WINAMP_OMBROWSER_TOOLBARITEM_HEADER
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
#include <wtypes.h>
#define ICON_NONE (-1)
class __declspec(novtable) ToolbarItem
{
public:
typedef enum
{
stateHidden = 0x0001,
stateDisabled = 0x0002,
statePressed = 0x0004,
stateHighlighted = 0x0008,
stateFocused = 0x0010,
stateNoFocusRect = 0x0020,
styleChevronOnly = 0x0100,
styleNoChevron = 0x0200,
stylePopup = 0x0400,
styleFlexible = 0x1000, // item can change it width
styleStatic = 0x2000, // item not reacting on mouse or keyboard events
styleWantKey = 0x4000,
styleTabstop = 0x8000, // item wants to have it's own tabstop (not TBS_TABSTOP)
} Styles;
typedef struct __Template
{
LPCSTR name;
LPCWSTR text;
LPCWSTR description;
INT iconId;
INT commandId;
UINT style;
} Template;
protected:
ToolbarItem(LPCSTR pszName, UINT nStyle, INT nIcon, LPCWSTR pszText, LPCWSTR pszDescription);
virtual ~ToolbarItem();
public:
ULONG AddRef();
ULONG Release();
LPCSTR GetName();
virtual UINT GetStyle();
virtual void SetStyle(HWND hToolbar, UINT newStyle, UINT styleMask); // if NULL != hToolbar - item will be invalidated
virtual BOOL SetRect(const RECT *prc);
BOOL GetRect(RECT *prc);
BOOL OffsetRect(INT dx, INT dy);
virtual BOOL SetRectEmpty();
BOOL IsRectEmpty();
BOOL PtInRect(POINT pt);
BOOL IntersectRect(RECT *prcDst, const RECT *prcSrc);
BOOL IsEqual(LPCSTR pszName, INT cchName);
virtual HRESULT GetText(LPWSTR pszBuffer, UINT cchBufferMax);
virtual HRESULT GetTextLength(size_t *pcchLength) { return E_NOTIMPL; }
virtual HRESULT GetDescription(LPWSTR pszBuffer, UINT cchBufferMax);
virtual BOOL SetDescription(HWND hToolbar, LPCWSTR pszDescription);
virtual BOOL AdjustRect(HWND hToolbar, RECT *proposedRect) { return FALSE; }
virtual BOOL Paint(HWND hToolbar, HDC hdc, const RECT *paintRect, UINT state) { return FALSE;}
virtual INT GetTip(LPTSTR pszBuffer, INT cchBufferMax) { return 0; }
virtual void MouseMove(HWND hToolbar, UINT mouseFlags, POINT pt) {}
virtual void MouseLeave(HWND hToolbar) {}
virtual void LButtonDown(HWND hToolbar, UINT mouseFlags, POINT pt) {}
virtual void LButtonUp(HWND hToolbar, UINT mouseFlags, POINT pt) {}
virtual void Click(HWND hToolbar, UINT mouseFlags, POINT pt) {}
virtual BOOL SetValueInt(HWND hToolbar, INT value) { return FALSE; }
virtual BOOL SetValueStr(HWND hToolbar, LPCWSTR value) { return FALSE; }
virtual INT GetCommandId() { return 0; }
virtual void UpdateSkin(HWND hToolbar) {}
virtual BOOL PtInItem(POINT pt);
virtual BOOL FillMenuInfo(HWND hToolbar, MENUITEMINFO *pmii, LPWSTR pszBuffer, INT cchBufferMax) { return FALSE; }
virtual BOOL KeyDown(HWND hToolbar, INT vKey, UINT flags) { return FALSE; }
virtual BOOL KeyUp(HWND hToolbar, INT vKey, UINT flags) { return FALSE; }
virtual void SetFocus(HWND hToolbar, ToolbarItem *focusItem, BOOL fSet) {}
virtual BOOL SetCursor(HWND hToolbar, HWND hCursor, UINT hitTest, UINT messageId) { return FALSE; }
virtual void CommandSent(HWND hToolbar, INT commandId) {}
virtual BOOL DisplayContextMenu(HWND hToolbar, INT x, INT y) { return FALSE; }
protected:
ULONG ref;
LPSTR name;
UINT style;
RECT rect;
INT iconId;
LPWSTR text;
LPWSTR description;
};
#endif // NULLSOFT_WINAMP_OMBROWSER_TOOLBARITEM_HEADER