OSDN Git Service

Change Dir Structure to be same as TortoiseSVN'
[tortoisegit/TortoiseGitJp.git] / src / Utils / MiscUI / ScrollTool.h
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2006 - Stefan Kueng\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 #pragma once\r
20 \r
21 /**\r
22  * \ingroup Utils\r
23  * Helper class to show a tooltip for e.g. a scrollbar while it is dragged.\r
24  * Example use:\r
25  * In the OnVScroll() message handler\r
26  * \code\r
27  * switch (nSBCode)\r
28  * {\r
29  *   case SB_THUMBPOSITION:\r
30  *    m_ScrollTool.Clear();\r
31  *    break;\r
32  *   case SB_THUMBTRACK:\r
33  *    m_ScrollTool.Init(&thumbpoint);\r
34  *    m_ScrollTool.SetText(&thumbpoint, _T("Line: %*ld"), maxchars, nTrackPos);\r
35  *    break;\r
36  * }\r
37  * \r
38  */\r
39 class CScrollTool : public CWnd\r
40 {\r
41 public:\r
42         CScrollTool();\r
43 \r
44 public:\r
45         /**\r
46          * Initializes the tooltip control.\r
47          * \param pos the position in screen coordinates where the tooltip should be shown\r
48          * \param bRightAligned if set to true, the tooltip is right aligned with pos,\r
49          *        depending on the text width shown in the tooltip\r
50          */\r
51     bool Init(LPPOINT pos, bool bRightAligned = false);\r
52         /**\r
53          * Sets the text which should be shown in the tooltip.\r
54          * \param pos the position in screen coordinates where the tooltip should be shown\r
55          * \fmt a format string\r
56          */\r
57         void SetText(LPPOINT pos, const TCHAR * fmt, ...);\r
58         /**\r
59          * Removes the tooltip control.\r
60          */\r
61         void Clear();\r
62         /**\r
63          * Returns the width of \c szText in pixels for the tooltip control\r
64          */\r
65         LONG GetTextWidth(LPCTSTR szText);\r
66 \r
67         virtual ~CScrollTool();\r
68 \r
69 protected:\r
70         DECLARE_MESSAGE_MAP()\r
71 private:\r
72     TOOLINFO ti;\r
73     bool m_bInitCalled;\r
74         bool m_bRightAligned;\r
75 };\r