52 lines
1.7 KiB
C++
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;
|
|
};
|