123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #include "main.h"
- #include "./toolbarItem.h"
- #include "./toolbar.h"
- #include "./graphics.h"
- #include "./resource.h"
- #include "../Plugins/General/gen_ml/ml_ipc_0313.h"
- #include <strsafe.h>
- ToolbarItem::ToolbarItem(LPCSTR pszName, UINT nStyle, INT nIcon, LPCWSTR pszText, LPCWSTR pszDescription)
- : ref(1), name(NULL), style(nStyle), iconId(nIcon), text(NULL), description(NULL)
- {
- name = Plugin_CopyAnsiString(pszName);
- text = Plugin_DuplicateResString(pszText);
- description = Plugin_DuplicateResString(pszDescription);
- }
- ToolbarItem::~ToolbarItem()
- {
- Plugin_FreeAnsiString(name);
- Plugin_FreeResString(text);
- Plugin_FreeResString(description);
- }
- ULONG ToolbarItem::AddRef()
- {
- return InterlockedIncrement((LONG*)&ref);
- }
- ULONG ToolbarItem::Release()
- {
- if (0 == ref) return ref;
- LONG r = InterlockedDecrement((LONG*)&ref);
- if (0 == r) delete(this);
- return r;
- }
- LPCSTR ToolbarItem::GetName()
- {
- return name;
- }
- UINT ToolbarItem::GetStyle()
- {
- return style;
- }
- void ToolbarItem::SetStyle(HWND hToolbar, UINT newStyle, UINT styleMask)
- {
- UINT styleNew = (style & ~styleMask) | (newStyle & styleMask);
- if (style != styleNew)
- {
- style = styleNew;
- if (NULL != hToolbar && 0 == (stateHidden & style))
- InvalidateRect(hToolbar, &rect, FALSE);
- }
- }
- BOOL ToolbarItem::SetRect(const RECT *prc)
- {
- return CopyRect(&rect, prc);
- }
- BOOL ToolbarItem::GetRect(RECT *prc)
- {
- return CopyRect(prc, &rect);
- }
- BOOL ToolbarItem::OffsetRect(INT dx, INT dy)
- {
- return ::OffsetRect(&rect, dx, dy);
- }
- BOOL ToolbarItem::SetRectEmpty()
- {
- return ::SetRectEmpty(&rect);
- }
- BOOL ToolbarItem::IsRectEmpty()
- {
- return ::IsRectEmpty(&rect);
- }
- BOOL ToolbarItem::PtInRect(POINT pt)
- {
- return ::PtInRect(&rect, pt);
- }
- BOOL ToolbarItem::PtInItem(POINT pt)
- {
- return (pt.x >= rect.left && pt.x < rect.right && rect.bottom != rect.top);
- }
- BOOL ToolbarItem::IntersectRect(RECT *prcDst, const RECT *prcSrc)
- {
- return ::IntersectRect(prcDst, &rect, prcSrc);
- }
- BOOL ToolbarItem::IsEqual(LPCSTR pszName, INT cchName)
- {
- return (NULL != name && CSTR_EQUAL == CompareStringA(CSTR_INVARIANT, NORM_IGNORECASE, pszName, cchName, name, -10));
- }
- BOOL ToolbarItem::SetDescription(HWND hToolbar, LPCWSTR pszDescription)
- {
- Plugin_FreeResString(description);
- description = Plugin_DuplicateResString(pszDescription);
- return TRUE;
- }
- HRESULT ToolbarItem::GetText(LPWSTR pszBuffer, UINT cchBufferMax)
- {
- return Plugin_CopyResString(pszBuffer, cchBufferMax, text);
- }
- HRESULT ToolbarItem::GetDescription(LPWSTR pszBuffer, UINT cchBufferMax)
- {
- return Plugin_CopyResString(pszBuffer, cchBufferMax, description);
- }
|