|
1
|
1 #pragma once
|
|
|
2
|
|
|
3 class CListControlTruncationTooltipImpl : public CListControlHeaderImpl {
|
|
|
4 private:
|
|
|
5 typedef CListControlHeaderImpl TParent;
|
|
|
6 public:
|
|
|
7 CListControlTruncationTooltipImpl();
|
|
|
8
|
|
|
9 BEGIN_MSG_MAP_EX(CListControlTruncationTooltipImpl)
|
|
|
10 MESSAGE_HANDLER(WM_MOUSEHOVER,OnHover);
|
|
|
11 MESSAGE_HANDLER(WM_MOUSEMOVE,OnMouseMovePassThru);
|
|
|
12 MESSAGE_HANDLER(WM_TIMER,OnTimer);
|
|
|
13 MESSAGE_HANDLER(WM_DESTROY,OnDestroyPassThru);
|
|
|
14 CHAIN_MSG_MAP(TParent)
|
|
|
15 NOTIFY_CODE_HANDLER(TTN_GETDISPINFO,OnTTGetDispInfo);
|
|
|
16 NOTIFY_CODE_HANDLER(TTN_POP,OnTTPop);
|
|
|
17 NOTIFY_CODE_HANDLER(TTN_SHOW,OnTTShow);
|
|
|
18 END_MSG_MAP()
|
|
|
19
|
|
|
20 void OnViewOriginChange(CPoint p_delta) override {TParent::OnViewOriginChange(p_delta);TooltipRemove();}
|
|
|
21 void TooltipRemove();
|
|
|
22 virtual void RefreshDarkMode();
|
|
|
23 protected:
|
|
|
24 virtual bool GetTooltipData( CPoint ptAbs, pfc::string_base & text, CRect & rc, CFontHandle & font) const;
|
|
|
25 private:
|
|
|
26 enum {
|
|
|
27 KTooltipTimer = 0x51dbee9e,
|
|
|
28 KTooltipTimerDelay = 50,
|
|
|
29 };
|
|
|
30 LRESULT OnHover(UINT,WPARAM,LPARAM,BOOL&);
|
|
|
31 LRESULT OnMouseMovePassThru(UINT,WPARAM,LPARAM,BOOL&);
|
|
|
32 LRESULT OnTimer(UINT,WPARAM,LPARAM,BOOL&);
|
|
|
33 LRESULT OnTTGetDispInfo(int,LPNMHDR,BOOL&);
|
|
|
34 LRESULT OnTTShow(int,LPNMHDR,BOOL&);
|
|
|
35 LRESULT OnTTPop(int,LPNMHDR,BOOL&);
|
|
|
36 LRESULT OnDestroyPassThru(UINT,WPARAM,LPARAM,BOOL&);
|
|
|
37
|
|
|
38 void InitTooltip();
|
|
|
39 void TooltipActivateAbs(const char * label, const CRect & rect);
|
|
|
40 void TooltipActivate(const char * label, const CRect & rect);
|
|
|
41 void TooltipRemoveCheck(LPARAM pos);
|
|
|
42 void TooltipRemoveCheck();
|
|
|
43 void TooltipUpdateFont();
|
|
|
44 void OnSetFont(bool) override {TooltipUpdateFont();}
|
|
|
45 bool IsRectFullyVisibleAbs(CRect const & r);
|
|
|
46 bool IsRectPartiallyObscuredAbs(CRect const & r) const;
|
|
|
47 CRect m_tooltipRect;
|
|
|
48 CToolTipCtrl m_tooltip;
|
|
|
49 TOOLINFO m_toolinfo;
|
|
|
50 pfc::stringcvt::string_os_from_utf8 m_tooltipText;
|
|
|
51 CFontHandle m_tooltipFont;
|
|
|
52 };
|