Files
foobar2000-sdk/libPPUI/CListControlTruncationTooltipImpl.h
2021-12-14 00:28:25 -07:00

52 lines
1.7 KiB
C++

#pragma once
class CListControlTruncationTooltipImpl : public CListControlHeaderImpl {
private:
typedef CListControlHeaderImpl TParent;
public:
CListControlTruncationTooltipImpl();
BEGIN_MSG_MAP_EX(CListControlTruncationTooltipImpl)
MESSAGE_HANDLER(WM_MOUSEHOVER,OnHover);
MESSAGE_HANDLER(WM_MOUSEMOVE,OnMouseMovePassThru);
MESSAGE_HANDLER(WM_TIMER,OnTimer);
MESSAGE_HANDLER(WM_DESTROY,OnDestroyPassThru);
CHAIN_MSG_MAP(TParent)
NOTIFY_CODE_HANDLER(TTN_GETDISPINFO,OnTTGetDispInfo);
NOTIFY_CODE_HANDLER(TTN_POP,OnTTPop);
NOTIFY_CODE_HANDLER(TTN_SHOW,OnTTShow);
END_MSG_MAP()
void OnViewOriginChange(CPoint p_delta) {TParent::OnViewOriginChange(p_delta);TooltipRemove();}
void TooltipRemove();
protected:
virtual bool GetTooltipData( CPoint ptAbs, pfc::string_base & text, CRect & rc, CFontHandle & font) const;
private:
enum {
KTooltipTimer = 0x51dbee9e,
KTooltipTimerDelay = 50,
};
LRESULT OnHover(UINT,WPARAM,LPARAM,BOOL&);
LRESULT OnMouseMovePassThru(UINT,WPARAM,LPARAM,BOOL&);
LRESULT OnTimer(UINT,WPARAM,LPARAM,BOOL&);
LRESULT OnTTGetDispInfo(int,LPNMHDR,BOOL&);
LRESULT OnTTShow(int,LPNMHDR,BOOL&);
LRESULT OnTTPop(int,LPNMHDR,BOOL&);
LRESULT OnDestroyPassThru(UINT,WPARAM,LPARAM,BOOL&);
void InitTooltip();
void TooltipActivateAbs(const char * label, const CRect & rect);
void TooltipActivate(const char * label, const CRect & rect);
void TooltipRemoveCheck(LPARAM pos);
void TooltipRemoveCheck();
void TooltipUpdateFont();
void OnSetFont(bool) {TooltipUpdateFont();}
bool IsRectFullyVisibleAbs(CRect const & r);
bool IsRectPartiallyObscuredAbs(CRect const & r) const;
CRect m_tooltipRect;
CToolTipCtrl m_tooltip;
TOOLINFO m_toolinfo;
pfc::stringcvt::string_os_from_utf8 m_tooltipText;
CFontHandle m_tooltipFont;
};