OSDN Git Service

Show Ignore Sub Menu
[tortoisegit/TortoiseGitJp.git] / Utils / TreePropSheet / PropPageFrame.cpp
1 /********************************************************************\r
2 *\r
3 * Copyright (c) 2002 Sven Wiegand <mail@sven-wiegand.de>\r
4 *\r
5 * You can use this and modify this in any way you want,\r
6 * BUT LEAVE THIS HEADER INTACT.\r
7 *\r
8 * Redistribution is appreciated.\r
9 *\r
10 * $Workfile:$\r
11 * $Revision:$\r
12 * $Modtime:$\r
13 * $Author:$\r
14 *\r
15 * Revision History:\r
16 *       $History:$\r
17 *\r
18 *********************************************************************/\r
19 \r
20 #include "stdafx.h"\r
21 #include "PropPageFrame.h"\r
22 \r
23 #ifdef _DEBUG\r
24 #define new DEBUG_NEW\r
25 #undef THIS_FILE\r
26 static char THIS_FILE[] = __FILE__;\r
27 #endif\r
28 \r
29 \r
30 \r
31 namespace TreePropSheet\r
32 {\r
33 \r
34 \r
35 //-------------------------------------------------------------------\r
36 // class CPropPageFrame\r
37 //-------------------------------------------------------------------\r
38 \r
39 CPropPageFrame::CPropPageFrame()\r
40 :       m_bShowCaption(FALSE),\r
41         m_nCaptionHeight(0),\r
42         m_hCaptionIcon(NULL),\r
43         m_dwMsgFormat(DT_CENTER|DT_VCENTER|DT_NOPREFIX|DT_SINGLELINE)\r
44 {\r
45 }\r
46 \r
47 \r
48 CPropPageFrame::~CPropPageFrame()\r
49 {\r
50 }\r
51 \r
52 \r
53 /////////////////////////////////////////////////////////////////////\r
54 // Operations\r
55 \r
56 \r
57 void CPropPageFrame::ShowCaption(BOOL bEnable)\r
58 {\r
59         m_bShowCaption = bEnable;\r
60         SafeUpdateWindow(CalcCaptionArea());\r
61 }\r
62 \r
63 \r
64 BOOL CPropPageFrame::GetShowCaption() const\r
65 {\r
66         return m_bShowCaption;\r
67 }\r
68 \r
69 \r
70 void CPropPageFrame::SetCaption(LPCTSTR lpszCaption, HICON hIcon /*= NULL*/)\r
71 {\r
72         m_strCaption = lpszCaption;\r
73         m_hCaptionIcon = hIcon;\r
74         SafeUpdateWindow(CalcCaptionArea());\r
75 }\r
76 \r
77 \r
78 CString CPropPageFrame::GetCaption(HICON *pIcon /* = NULL */) const\r
79 {\r
80         if (pIcon)\r
81                 *pIcon = m_hCaptionIcon;\r
82         return m_strCaption;\r
83 }\r
84 \r
85 \r
86 void CPropPageFrame::SetCaptionHeight(int nCaptionHeight)\r
87 {\r
88         m_nCaptionHeight = nCaptionHeight;\r
89         SafeUpdateWindow(CalcCaptionArea());\r
90 }\r
91 \r
92 \r
93 int CPropPageFrame::GetCaptionHeight() const\r
94 {\r
95         return m_nCaptionHeight;\r
96 }\r
97 \r
98 \r
99 void CPropPageFrame::SetMsgText(LPCTSTR lpszMsg)\r
100 {\r
101         m_strMsg = lpszMsg;\r
102         SafeUpdateWindow(CalcMsgArea());\r
103 }\r
104 \r
105 \r
106 CString CPropPageFrame::GetMsgText() const\r
107 {\r
108         return m_strMsg;\r
109 }\r
110 \r
111 \r
112 void CPropPageFrame::SetMsgFormat(DWORD dwFormat)\r
113 {\r
114         m_dwMsgFormat = dwFormat;\r
115         SafeUpdateWindow(CalcMsgArea());\r
116 }\r
117 \r
118 \r
119 DWORD CPropPageFrame::GetMsgFormat() const\r
120 {\r
121         return m_dwMsgFormat;\r
122 }\r
123 \r
124 \r
125 /////////////////////////////////////////////////////////////////////\r
126 // Overridable implementation helpers\r
127 \r
128 void CPropPageFrame::Draw(CDC *pDc)\r
129 {\r
130         if (GetShowCaption())\r
131                 DrawCaption(pDc, CalcCaptionArea(), m_strCaption, m_hCaptionIcon);\r
132         DrawMsg(pDc, CalcMsgArea(), m_strMsg, m_dwMsgFormat);\r
133 }\r
134 \r
135 \r
136 CRect CPropPageFrame::CalcMsgArea()\r
137 {\r
138         ASSERT(IsWindow(GetWnd()->GetSafeHwnd()));\r
139 \r
140         CRect   rectMsg;\r
141         GetWnd()->GetClientRect(rectMsg);\r
142         if (GetShowCaption())\r
143                 rectMsg.top+= GetCaptionHeight();\r
144 \r
145         return rectMsg;\r
146 }\r
147 \r
148 \r
149 void CPropPageFrame::DrawMsg(CDC *pDc, CRect rect, LPCTSTR /*lpszMsg*/, DWORD /*dwFormat*/) \r
150 {\r
151         CFont   *pPrevFont = dynamic_cast<CFont*>(pDc->SelectStockObject(DEFAULT_GUI_FONT));\r
152         int             nPrevBkMode = pDc->SetBkMode(TRANSPARENT);\r
153 \r
154         pDc->DrawText(GetMsgText(), rect, GetMsgFormat());\r
155 \r
156         pDc->SetBkMode(nPrevBkMode);\r
157         pDc->SelectObject(pPrevFont);\r
158 }\r
159 \r
160 \r
161 CRect   CPropPageFrame::CalcCaptionArea()\r
162 {\r
163         ASSERT(IsWindow(GetWnd()->GetSafeHwnd()));\r
164 \r
165         CRect   rectCaption;\r
166         GetWnd()->GetClientRect(rectCaption);\r
167         if (!GetShowCaption())\r
168                 rectCaption.bottom = rectCaption.top;\r
169         else\r
170                 rectCaption.bottom = rectCaption.top+GetCaptionHeight();\r
171 \r
172         return rectCaption;\r
173 }\r
174 \r
175 \r
176 void CPropPageFrame::DrawCaption(CDC * /*pDc*/, CRect /*rect*/, LPCTSTR /*lpszCaption*/, HICON /*hIcon*/) \r
177 {\r
178         // should be implemented by specialized classes\r
179 }\r
180 \r
181 \r
182 /////////////////////////////////////////////////////////////////////\r
183 // Implementation helpers\r
184 \r
185 void CPropPageFrame::SafeUpdateWindow(LPCRECT lpRect /* = NULL */)\r
186 {\r
187         if (!IsWindow(GetWnd()->GetSafeHwnd()))\r
188                 return;\r
189 \r
190         GetWnd()->InvalidateRect(lpRect, TRUE);\r
191 }\r
192 \r
193 \r
194 \r
195 } //namespace TreePropSheet\r