|
|
//////////////////////////////////////////////////////////////////////////////
//
// CTipbarBalloonItem
//
//////////////////////////////////////////////////////////////////////////////
class CTipbarBalloonItem: public CTipbarItem, public CUIFObject, public ITfLangBarItemSink { public: CTipbarBalloonItem(CTipbarThread *ptt, ITfLangBarItem *plbi, ITfLangBarItemBalloon *plbiBalloon, DWORD dwId, RECT *prc, DWORD dwStyle, TF_LANGBARITEMINFO *plbiInfo, DWORD dwStatus);
~CTipbarBalloonItem();
//
// IUnknown methods
//
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//
// ITfLangbarItemSink methods
//
STDMETHODIMP OnUpdate(DWORD dwFlags) { return CTipbarItem::OnUpdate(dwFlags); }
BOOL Init() { CUIFObject::Initialize(); return TRUE; } void DetachWnd() {DetachWndObj();} void ClearWnd() {ClearWndObj();} void Enable(BOOL fEnable) { CUIFObject::Enable(fEnable); }
void SetToolTip(LPCWSTR pwszToolTip) { CUIFObject::SetToolTip(pwszToolTip); }
LPCWSTR GetToolTipFromUIOBJ() { return CUIFObject::GetToolTip(); }
LPCWSTR GetToolTip() { #ifdef SHOWTOOLTIP_ONUPDATE
return CTipbarItem::GetToolTip(); #else
if (_bstrText && wcslen(_bstrText)) return _bstrText; else return NULL; #endif
}
void GetScreenRect(RECT *prc) { GetRect(prc); MyClientToScreen(prc); }
void SetFont(HFONT hfont) { CUIFObject::SetFont(hfont); }
void SetRect( const RECT *prc ); BOOL OnSetCursor(UINT uMsg, POINT pt) {return CTipbarItem::OnSetCursor(uMsg, pt);} void OnPosChanged(); void OnPaint( HDC hdc ); void OnRightClick(); void OnLeftClick(); HRESULT OnUpdateHandler(DWORD dwFlags, DWORD dwStatus);
void AddMeToUI(CUIFObject *pobj) { if (!pobj) return;
pobj->AddUIObj(this); _AddedToUI(); } void RemoveMeToUI(CUIFObject *pobj) { DestroyBalloonTip();
if (!pobj) return;
pobj->RemoveUIObj(this); _RemovedToUI(); }
void DrawTransparentText(HDC hdc, COLORREF crText, WCHAR *wtz, const RECT *prc); void DrawRect(HDC hdc, const RECT *prc, COLORREF crBorder, COLORREF crFill); void DrawUnrecognizedBalloon(HDC hdc, WCHAR *wtz, const RECT *prc); void DrawShowBalloon(HDC hdc, WCHAR *wtz, const RECT *prc); void DrawRecoBalloon(HDC hdc, WCHAR *wtz, const RECT *prc);
void DestroyBalloonTip();
virtual void SetActiveTheme(LPCWSTR pszClassList, int iPartID, int iStateID ) { CUIFObject::SetActiveTheme(pszClassList, iPartID, iStateID); }
private:
BOOL IsTextEllipsis(WCHAR *psz, const RECT *prc); void OnTimer(); void ShowBalloonTip();
BOOL OnShowToolTip() { #ifdef SHOWTOOLTIP_ONUPDATE
if (_bstrText && wcslen(_bstrText)) { ShowBalloonTip(); return TRUE; } #endif
return FALSE; }
void OnHideToolTip() { DestroyBalloonTip(); }
COLORREF col( int r1, COLORREF col1, int r2, COLORREF col2 ) { int sum = r1 + r2;
Assert( sum == 10 || sum == 100 || sum == 1000 ); int r = (r1 * GetRValue(col1) + r2 * GetRValue(col2) + sum/2) / sum; int g = (r1 * GetGValue(col1) + r2 * GetGValue(col2) + sum/2) / sum; int b = (r1 * GetBValue(col1) + r2 * GetBValue(col2) + sum/2) / sum; return RGB( r, g, b ); }
ITfLangBarItemBalloon *_plbiBalloon; BSTR _bstrText; TfLBBalloonStyle _style;
CUIFBalloonWindow *_pblnTip; };
|