OSDN Git Service

RebaseDlg: Show Commit Info at tooltip for branch and upstream branch.
[tortoisegit/TortoiseGitJp.git] / src / Utils / MiscUI / HintListCtrl.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2008 - TortoiseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 \r
20 #include "stdafx.h"\r
21 #include "MyMemDC.h"\r
22 #include "HintListCtrl.h"\r
23 \r
24 CHintListCtrl::CHintListCtrl() : CListCtrl()\r
25 {\r
26 }\r
27 \r
28 CHintListCtrl::~CHintListCtrl()\r
29 {\r
30 }\r
31 \r
32 void CHintListCtrl::ShowText(const CString& sText, bool forceupdate /* = false*/)\r
33 {\r
34         m_sText = sText;\r
35         Invalidate();\r
36         if (forceupdate)\r
37                 UpdateWindow();\r
38 }\r
39 \r
40 void CHintListCtrl::ClearText()\r
41 {\r
42         m_sText.Empty();\r
43         Invalidate();\r
44 }\r
45 \r
46 BEGIN_MESSAGE_MAP(CHintListCtrl, CListCtrl)\r
47         ON_WM_PAINT()\r
48 END_MESSAGE_MAP()\r
49 \r
50 void CHintListCtrl::OnPaint()\r
51 {\r
52         Default();\r
53         if (!m_sText.IsEmpty())\r
54         {\r
55                 COLORREF clrText = ::GetSysColor(COLOR_WINDOWTEXT);\r
56                 COLORREF clrTextBk;\r
57                 if (IsWindowEnabled())\r
58                         clrTextBk = ::GetSysColor(COLOR_WINDOW);\r
59                 else\r
60                         clrTextBk = ::GetSysColor(COLOR_3DFACE);\r
61 \r
62                 CRect rc;\r
63                 GetClientRect(&rc);\r
64                 CHeaderCtrl* pHC;\r
65                 pHC = GetHeaderCtrl();\r
66                 if (pHC != NULL)\r
67                 {\r
68                         CRect rcH;\r
69                         rcH.SetRectEmpty();\r
70                         pHC->GetItemRect(0, &rcH);\r
71                         rc.top += rcH.bottom;\r
72                 }\r
73                 CDC* pDC = GetDC();\r
74                 {\r
75                         CMyMemDC memDC(pDC, &rc);\r
76 \r
77                         memDC.SetTextColor(clrText);\r
78                         memDC.SetBkColor(clrTextBk);\r
79                         memDC.FillSolidRect(rc, clrTextBk);\r
80                         rc.top += 10;\r
81                         CGdiObject * oldfont = memDC.SelectStockObject(DEFAULT_GUI_FONT);\r
82                         memDC.DrawText(m_sText, rc, DT_CENTER | DT_VCENTER |\r
83                                 DT_WORDBREAK | DT_NOPREFIX | DT_NOCLIP);\r
84                         memDC.SelectObject(oldfont);\r
85                 }\r
86                 ReleaseDC(pDC);\r
87         }\r
88 }\r