MacProgressCtrl.cpp
上传用户:sunh8215
上传日期:2010-02-13
资源大小:1616k
文件大小:18k
源码类别:

酒店行业

开发平台:

Visual C++

  1. // MacProgressCtrl.cpp : implementation file
  2. //
  3. // CMacProgressCtrl class, version 1.0
  4. //
  5. // Copyright (c) 1999 Paul M. Meidinger (pmmeidinger@yahoo.com)
  6. //
  7. // Feel free to modifiy and/or distribute this file, but
  8. // do not remove this header.
  9. //
  10. // I would appreciate a notification of any bugs discovered or 
  11. // improvements that could be made.
  12. //
  13. // This file is provided "as is" with no expressed or implied warranty.
  14. //
  15. // History:
  16. // PMM 12/21/1999 Initial implementation.
  17. #include "stdafx.h"
  18. #include "MacProgressCtrl.h"
  19. #ifdef _DEBUG
  20. #define new DEBUG_NEW
  21. #undef THIS_FILE
  22. static char THIS_FILE[] = __FILE__;
  23. #endif
  24. #define IDT_INDETERMINATE 100
  25. #define IND_BAND_WIDTH 20
  26. // Funtion prototypes.
  27. COLORREF LightenColor(const COLORREF crColor, BYTE byIncreaseVal);
  28. COLORREF DarkenColor(const COLORREF crColor, BYTE byReduceVal);
  29. //-------------------------------------------------------------------
  30. //
  31. COLORREF LightenColor(const COLORREF crColor, BYTE byIncreaseVal)
  32. //
  33. // Return Value: None.
  34. //
  35. // Parameters : crColor - References a COLORREF structure.
  36. // byReduceVal - The amount to reduce the RGB values by.
  37. //
  38. // Remarks : Lightens a color by increasing the RGB values by the given number.
  39. //
  40. {
  41. BYTE byRed = GetRValue(crColor);
  42. BYTE byGreen = GetGValue(crColor);
  43. BYTE byBlue = GetBValue(crColor);
  44. if ((byRed + byIncreaseVal) <= 255)
  45. byRed = BYTE(byRed + byIncreaseVal);
  46. if ((byGreen + byIncreaseVal) <= 255)
  47. byGreen = BYTE(byGreen + byIncreaseVal);
  48. if ((byBlue + byIncreaseVal) <= 255)
  49. byBlue = BYTE(byBlue + byIncreaseVal);
  50. return RGB(byRed, byGreen, byBlue);
  51. } // LightenColorref
  52. //-------------------------------------------------------------------
  53. //
  54. COLORREF DarkenColor(const COLORREF crColor, BYTE byReduceVal)
  55. //
  56. // Return Value: None.
  57. //
  58. // Parameters : crColor - References a COLORREF structure.
  59. // byReduceVal - The amount to reduce the RGB values by.
  60. //
  61. // Remarks : Darkens a color by reducing the RGB values by the given number.
  62. //
  63. {
  64. BYTE byRed = GetRValue(crColor);
  65. BYTE byGreen = GetGValue(crColor);
  66. BYTE byBlue = GetBValue(crColor);
  67. if (byRed >= byReduceVal)
  68. byRed = BYTE(byRed - byReduceVal);
  69. if (byGreen >= byReduceVal)
  70. byGreen = BYTE(byGreen - byReduceVal);
  71. if (byBlue >= byReduceVal)
  72. byBlue = BYTE(byBlue - byReduceVal);
  73. return RGB(byRed, byGreen, byBlue);
  74. } // DarkenColorref
  75. /////////////////////////////////////////////////////////////////////////////
  76. // CMacProgressCtrl
  77. //-------------------------------------------------------------------
  78. //
  79. CMacProgressCtrl::CMacProgressCtrl()
  80. //
  81. // Return Value: None.
  82. //
  83. // Parameters : None.
  84. //
  85. // Remarks : Standard constructor.
  86. //
  87. {
  88. m_bIndeterminate = FALSE;
  89. m_nIndOffset = 0;
  90. m_crColor = ::GetSysColor(COLOR_HIGHLIGHT);
  91. GetColors();
  92. CreatePens();
  93. } // CMacProgressCtrl
  94. //-------------------------------------------------------------------
  95. //
  96. CMacProgressCtrl::~CMacProgressCtrl()
  97. //
  98. // Return Value: None.
  99. //
  100. // Parameters : None.
  101. //
  102. // Remarks : None.
  103. //
  104. {
  105. DeletePens();
  106. } // ~CMacProgressCtrl
  107. BEGIN_MESSAGE_MAP(CMacProgressCtrl, CProgressCtrl)
  108. //{{AFX_MSG_MAP(CMacProgressCtrl)
  109. ON_WM_PAINT()
  110. ON_WM_TIMER()
  111. ON_WM_ERASEBKGND()
  112. //}}AFX_MSG_MAP
  113. END_MESSAGE_MAP()
  114. /////////////////////////////////////////////////////////////////////////////
  115. // CMacProgressCtrl message handlers
  116. //-------------------------------------------------------------------
  117. //
  118. void CMacProgressCtrl::OnPaint() 
  119. //
  120. // Return Value: None.
  121. //
  122. // Parameters : None.
  123. //
  124. // Remarks : The framework calls this member function when Windows 
  125. // or an application makes a request to repaint a portion 
  126. // of an application抯 window.
  127. //
  128. {
  129. CPaintDC dcPaint(this); // device context for painting
  130. CRect rect, rectClient;
  131. GetClientRect(rectClient);
  132. rect = rectClient;
  133. BOOL bVertical = GetStyle() & PBS_VERTICAL;
  134. // Create a memory DC for drawing.
  135. CDC dc;
  136. dc.CreateCompatibleDC(&dcPaint);
  137.   int nSavedDC = dc.SaveDC();
  138. CBitmap bmp;
  139. bmp.CreateCompatibleBitmap(&dcPaint, rect.Width(), rect.Height());
  140. CBitmap *pOldBmp = dc.SelectObject(&bmp);
  141. CBrush br1(m_crColorLightest);
  142. CBrush br2(::GetSysColor(COLOR_3DFACE));
  143. dc.FillRect(rect, &br2);
  144. int nLower, nUpper;
  145. GetRange(nLower, nUpper);
  146. // Determine the size of the bar and draw it.
  147. if (bVertical)
  148. {
  149. if (!m_bIndeterminate)
  150. rect.top = rect.bottom - int(((float)rect.Height() * float(GetPos() - nLower)) / float(nUpper - nLower));
  151. dc.FillRect(rect, &br1);
  152. DrawVerticalBar(&dc, rect);
  153. }
  154. else
  155.    {
  156. if (!m_bIndeterminate)
  157. rect.right = int(((float)rect.Width() * float(GetPos() - nLower)) / float(nUpper - nLower));
  158. dc.FillRect(rect, &br1);
  159. DrawHorizontalBar(&dc, rect);
  160. }
  161. dcPaint.BitBlt(rectClient.left, rectClient.top, rectClient.Width(), rectClient.Height(), 
  162. &dc, rectClient.left, rectClient.top, SRCCOPY);
  163. dc.SelectObject(pOldBmp);
  164. dc.RestoreDC(nSavedDC);
  165. dc.DeleteDC();
  166. } // OnPaint
  167. //-------------------------------------------------------------------
  168. //
  169. void CMacProgressCtrl::DrawHorizontalBar(CDC *pDC, const CRect rect)
  170. //
  171. // Return Value: None.
  172. //
  173. // Parameters : pDC - Specifies the device context object.
  174. // rect - Specifies the rectangle of the progess bar.
  175. //
  176. // Remarks : Draws a horizontal progress bar.
  177. //
  178. {
  179. if (!rect.Width())
  180. return;
  181. int nLeft = rect.left;
  182. int nTop = rect.top;
  183. int nBottom = rect.bottom;
  184. // Assume we're not drawing the indeterminate state.
  185. CPen *pOldPen = pDC->SelectObject(&m_penColorLight);
  186. if (m_bIndeterminate)
  187. {
  188. pOldPen = pDC->SelectObject(&m_penColor);
  189. int nNumBands = (rect.Width() / IND_BAND_WIDTH) + 2;
  190. int nHeight = rect.Height() + 1;
  191. int nAdjust = nLeft - IND_BAND_WIDTH + m_nIndOffset;
  192. int nXpos = 0;
  193. int nYpos1 = nTop + 1;
  194. int nYpos2 = nBottom - 2;
  195. for (int i = 0; i < nNumBands; i++)
  196. {
  197. nXpos = nAdjust + (i * IND_BAND_WIDTH);
  198. pDC->SelectObject(&m_penColorDarker);
  199. pDC->MoveTo(nXpos + 1, nTop);
  200. pDC->LineTo(nXpos + nHeight, nBottom);
  201. pDC->SelectObject(&m_penColorDark);
  202. pDC->MoveTo(nXpos + 2, nTop);
  203. pDC->LineTo(nXpos + nHeight + 1, nBottom);
  204. pDC->MoveTo(nXpos + 10, nTop);
  205. pDC->LineTo(nXpos + nHeight + 9, nBottom);
  206. pDC->SelectObject(&m_penColor);
  207. pDC->MoveTo(nXpos + 3, nTop);
  208. pDC->LineTo(nXpos + nHeight + 2, nBottom);
  209. pDC->MoveTo(nXpos + 9, nTop);
  210. pDC->LineTo(nXpos + nHeight + 8, nBottom);
  211. pDC->SelectObject(&m_penColorLight);
  212. pDC->MoveTo(nXpos + 4, nTop);
  213. pDC->LineTo(nXpos + nHeight + 3, nBottom);
  214. pDC->MoveTo(nXpos + 8, nTop);
  215. pDC->LineTo(nXpos + nHeight + 7, nBottom);
  216. pDC->SelectObject(&m_penColorLighter);
  217. pDC->MoveTo(nXpos + 5, nTop);
  218. pDC->LineTo(nXpos + nHeight + 4, nBottom);
  219. pDC->MoveTo(nXpos + 7, nTop);
  220. pDC->LineTo(nXpos + nHeight + 6, nBottom);
  221. } // for the number of bands
  222. } // if indeterminate
  223. else
  224. {
  225. int nRight = rect.right;
  226. pDC->MoveTo(nLeft + 2, nBottom - 4);
  227. pDC->LineTo(nRight - 2, nBottom - 4);
  228. pDC->MoveTo(nLeft + 2, nTop + 2);
  229. pDC->LineTo(nRight - 2, nTop + 2);
  230. pDC->SetPixel(nLeft + 1, nBottom - 3, m_crColorLight);
  231. pDC->SetPixel(nLeft + 1, nTop + 1, m_crColorLight);
  232. pDC->SelectObject(&m_penColorLighter);
  233. pDC->MoveTo(nLeft + 2, nBottom - 5);
  234. pDC->LineTo(nRight - 3, nBottom - 5);
  235. pDC->LineTo(nRight - 3, nTop + 3);
  236. pDC->LineTo(nLeft + 1, nTop + 3);
  237. pDC->SetPixel(nLeft + 1, nBottom - 4, m_crColorLighter);
  238. pDC->SetPixel(nLeft + 1, nTop + 2, m_crColorLighter);
  239. pDC->SelectObject(&m_penColor);
  240. pDC->MoveTo(nLeft, nBottom - 1);
  241. pDC->LineTo(nLeft, nTop);
  242. pDC->LineTo(nLeft + 2, nTop);
  243. pDC->SetPixel(nLeft + 1, nBottom - 2, m_crColor);
  244. pDC->MoveTo(nLeft + 2, nBottom - 3);
  245. pDC->LineTo(nRight - 2, nBottom - 3);
  246. pDC->MoveTo(nLeft + 2, nTop + 1);
  247. pDC->LineTo(nRight - 1, nTop + 1);
  248. pDC->SelectObject(&m_penColorDark);
  249. pDC->MoveTo(nLeft + 2, nBottom - 2);
  250. pDC->LineTo(nRight - 2, nBottom - 2);
  251. pDC->LineTo(nRight - 2, nTop + 1);
  252. pDC->MoveTo(nLeft + 2, nTop);
  253. pDC->LineTo(nRight, nTop);
  254. pDC->SetPixel(nLeft + 1, nBottom - 1, m_crColorDark);
  255. pDC->SelectObject(&m_penColorDarker);
  256. pDC->MoveTo(nLeft + 2, nBottom - 1);
  257. pDC->LineTo(nRight - 1, nBottom - 1);
  258. pDC->LineTo(nRight - 1, nTop);
  259. pDC->SelectObject(&m_penShadow);
  260. pDC->MoveTo(nRight, nTop);
  261.   pDC->LineTo(nRight, nBottom);
  262. pDC->SelectObject(&m_penLiteShadow);
  263.   pDC->MoveTo(nRight + 1, nTop);
  264. pDC->LineTo(nRight + 1, nBottom);
  265. } // if not indeterminate
  266. pDC->SelectObject(pOldPen);
  267. } // DrawHorizontalBar
  268. //-------------------------------------------------------------------
  269. //
  270. void CMacProgressCtrl::DrawVerticalBar(CDC *pDC, const CRect rect)
  271. //
  272. // Return Value: None.
  273. //
  274. // Parameters : pDC - Specifies the device context object.
  275. // rect - Specifies the rectangle of the progess bar.
  276. //
  277. // Remarks : Draws a vertical progress bar.
  278. //
  279. {
  280. int nHeight = rect.Height();
  281. if (!nHeight)
  282. return;
  283. int nLeft = rect.left;
  284. int nTop = rect.top;
  285. int nRight = rect.right;
  286. int nBottom = rect.bottom;
  287. CPen *pOldPen = pDC->SelectObject(&m_penColor);
  288. if (m_bIndeterminate)
  289. {
  290. int nNumBands = (nHeight / IND_BAND_WIDTH) + 2;
  291. int nHeight = rect.Width() + 1;
  292. int nAdjust = nBottom - m_nIndOffset;
  293. int nXpos1 = nLeft;
  294. int nXpos2 = nRight + 1;
  295. int nYpos = nTop + 1;
  296. for (int i = 0; i < nNumBands; i++)
  297. {
  298. nYpos = nAdjust - (i * IND_BAND_WIDTH);
  299. pDC->SelectObject(&m_penColorDarker);
  300. pDC->MoveTo(nXpos1, nYpos);
  301. pDC->LineTo(nXpos2, nYpos + nHeight);
  302. pDC->SelectObject(&m_penColorDark);
  303. pDC->MoveTo(nXpos1, nYpos + 1);
  304. pDC->LineTo(nXpos2, nYpos + nHeight + 1);
  305. pDC->MoveTo(nXpos1, nYpos + 9);
  306. pDC->LineTo(nXpos2, nYpos + nHeight + 9);
  307. pDC->SelectObject(&m_penColor);
  308. pDC->MoveTo(nXpos1, nYpos + 2);
  309. pDC->LineTo(nXpos2, nYpos + nHeight + 2);
  310. pDC->MoveTo(nXpos1, nYpos + 8);
  311. pDC->LineTo(nXpos2, nYpos + nHeight + 8);
  312. pDC->SelectObject(&m_penColorLight);
  313. pDC->MoveTo(nXpos1, nYpos + 3);
  314. pDC->LineTo(nXpos2, nYpos + nHeight + 3);
  315. pDC->MoveTo(nXpos1, nYpos + 7);
  316. pDC->LineTo(nXpos2, nYpos + nHeight + 7);
  317. pDC->SelectObject(&m_penColorLighter);
  318. pDC->MoveTo(nXpos1, nYpos + 4);
  319. pDC->LineTo(nXpos2, nYpos + nHeight + 4);
  320. pDC->MoveTo(nXpos1, nYpos + 6);
  321. pDC->LineTo(nXpos2, nYpos + nHeight + 6);
  322. } // for the number of bands
  323. } // if indeterminate
  324. else
  325. {
  326. if (nHeight > 3)
  327. {
  328. pDC->MoveTo(nLeft, nTop + 1);
  329. pDC->LineTo(nLeft, nTop);
  330. pDC->LineTo(nRight, nTop);
  331. pDC->MoveTo(nLeft + 1, nBottom - 2);
  332. pDC->LineTo(nLeft + 1, nTop + 1);
  333. pDC->MoveTo(nRight - 3, nBottom - 3);
  334. pDC->LineTo(nRight - 3, nTop + 1);
  335. pDC->SetPixel(nRight - 2, nTop + 1, m_crColor);
  336. pDC->SelectObject(&m_penColorLight);
  337. pDC->MoveTo(nLeft + 2, nBottom - 3);
  338. pDC->LineTo(nLeft + 2, nTop + 1);
  339. pDC->MoveTo(nRight - 4, nBottom - 3);
  340. pDC->LineTo(nRight - 4, nTop + 1);
  341. pDC->SetPixel(nLeft + 1, nTop + 1, m_crColorLight);
  342. pDC->SetPixel(nRight - 3, nTop + 1, m_crColorLight);
  343. pDC->SelectObject(&m_penColorLighter);
  344. pDC->MoveTo(nLeft + 3, nBottom - 3);
  345. pDC->LineTo(nLeft + 3, nTop + 1);
  346. pDC->MoveTo(nRight - 5, nBottom - 3);
  347. pDC->LineTo(nRight - 5, nTop + 1);
  348. pDC->SetPixel(nLeft + 2, nTop + 1, m_crColorLighter);
  349. pDC->SetPixel(nRight - 4, nTop + 1, m_crColorLighter);
  350. pDC->SelectObject(&m_penColorDark);
  351. pDC->MoveTo(nLeft, nBottom - 1);
  352. pDC->LineTo(nLeft, nTop + 1);
  353. pDC->MoveTo(nLeft + 2, nBottom - 2);
  354. pDC->LineTo(nRight - 2, nBottom - 2);
  355. pDC->LineTo(nRight - 2, nTop + 1);
  356. pDC->SetPixel(nRight - 1, nTop + 1, m_crColorDark);
  357. pDC->SelectObject(&m_penColorDarker);
  358. pDC->MoveTo(nLeft + 1, nBottom - 1);
  359. pDC->LineTo(nRight - 1, nBottom - 1);
  360. pDC->LineTo(nRight - 1, nTop + 1);
  361. }
  362. else
  363. {
  364. CBrush br(m_crColor);
  365. CBrush *pOldBrush = pDC->SelectObject(&br);
  366. pDC->SelectObject(&m_penColorDark);
  367. pDC->Rectangle(rect);
  368. pDC->SelectObject(pOldBrush);
  369. }
  370. } // if not indeterminate
  371. pDC->SelectObject(pOldPen);
  372. } // DrawVerticalBar
  373. //-------------------------------------------------------------------
  374. //
  375. BOOL CMacProgressCtrl::OnEraseBkgnd(CDC* pDC) 
  376. //
  377. // Return Value: Nonzero if it erases the background; otherwise 0.
  378. //
  379. // Parameters : pDC - Specifies the device-context object.
  380. //
  381. // Remarks : The framework calls this member function when the 
  382. // CWnd object background needs erasing (for example, 
  383. // when resized). It is called to prepare an invalidated 
  384. // region for painting.
  385. //
  386. {
  387. return TRUE;
  388. } // OnEraseBkgnd
  389. //-------------------------------------------------------------------
  390. //
  391. void CMacProgressCtrl::GetColors()
  392. //
  393. // Return Value: None.
  394. //
  395. // Parameters : None.
  396. //
  397. // Remarks : Calculates the lighter and darker colors, as well as 
  398. // the shadow colors.
  399. //
  400. {
  401. m_crColorLight = LightenColor(m_crColor, 51);
  402. m_crColorLighter = LightenColor(m_crColorLight, 51);
  403. m_crColorLightest = LightenColor(m_crColorLighter, 51);
  404. m_crColorDark = DarkenColor(m_crColor, 51);
  405. m_crColorDarker = DarkenColor(m_crColorDark, 51);
  406. m_crDkShadow = ::GetSysColor(COLOR_3DDKSHADOW);
  407. m_crLiteShadow = ::GetSysColor(COLOR_3DSHADOW);
  408. // Get a color halfway between COLOR_3DDKSHADOW and COLOR_3DSHADOW
  409. BYTE byRed3DDkShadow = GetRValue(m_crDkShadow);
  410. BYTE byRed3DLiteShadow = GetRValue(m_crLiteShadow);
  411. BYTE byGreen3DDkShadow = GetGValue(m_crDkShadow);
  412. BYTE byGreen3DLiteShadow = GetGValue(m_crLiteShadow);
  413. BYTE byBlue3DDkShadow = GetBValue(m_crDkShadow);
  414. BYTE byBlue3DLiteShadow = GetBValue(m_crLiteShadow);
  415. m_crShadow = RGB(byRed3DLiteShadow + ((byRed3DDkShadow - byRed3DLiteShadow) >> 1),
  416.   byGreen3DLiteShadow + ((byGreen3DDkShadow - byGreen3DLiteShadow) >> 1),
  417.   byBlue3DLiteShadow + ((byBlue3DDkShadow - byBlue3DLiteShadow) >> 1));
  418. } // GetColors
  419. //-------------------------------------------------------------------
  420. //
  421. void CMacProgressCtrl::SetColor(COLORREF crColor)
  422. //
  423. // Return Value: None.
  424. //
  425. // Parameters : crColor - New color.
  426. //
  427. // Remarks : Sets the progress bar control's color. The lighter
  428. // darker colors are recalculated, and the pens recreated.
  429. //
  430. {
  431. m_crColor = crColor;
  432. GetColors();
  433. CreatePens();
  434. RedrawWindow();
  435. } // SetColor
  436. //-------------------------------------------------------------------
  437. //
  438. COLORREF CMacProgressCtrl::GetColor()
  439. //
  440. // Return Value: The current color.
  441. //
  442. // Parameters : None.
  443. //
  444. // Remarks : Returns the progress bar control's current color.
  445. //
  446. {
  447. return m_crColor;
  448. } // GetColor
  449. //-------------------------------------------------------------------
  450. //
  451. void CMacProgressCtrl::CreatePens()
  452. //
  453. // Return Value: None.
  454. //
  455. // Parameters : None.
  456. //
  457. // Remarks : Deletes the pen objects, if necessary, and creates them.
  458. //
  459. {
  460. DeletePens();
  461. m_penColorLight.CreatePen(PS_SOLID, 1, m_crColorLight);
  462. m_penColorLighter.CreatePen(PS_SOLID, 1, m_crColorLighter);
  463. m_penColor.CreatePen(PS_SOLID, 1, m_crColor);
  464. m_penColorDark.CreatePen(PS_SOLID, 1, m_crColorDark);
  465. m_penColorDarker.CreatePen(PS_SOLID, 1, m_crColorDarker);
  466. m_penDkShadow.CreatePen(PS_SOLID, 1, m_crDkShadow);
  467. m_penShadow.CreatePen(PS_SOLID, 1, m_crShadow);
  468. m_penLiteShadow.CreatePen(PS_SOLID, 1, m_crLiteShadow);
  469. } // CreatePens
  470. //-------------------------------------------------------------------
  471. //
  472. void CMacProgressCtrl::DeletePens()
  473. //
  474. // Return Value: None.
  475. //
  476. // Parameters : None.
  477. //
  478. // Remarks : Deletes the pen objects.
  479. //
  480. {
  481. if (m_penColorLight.m_hObject)
  482. m_penColorLight.DeleteObject();
  483. if (m_penColorLighter.m_hObject)
  484. m_penColorLighter.DeleteObject();
  485. if (m_penColor.m_hObject)
  486. m_penColor.DeleteObject();
  487. if (m_penColorDark.m_hObject)
  488. m_penColorDark.DeleteObject();
  489. if (m_penColorDarker.m_hObject)
  490. m_penColorDarker.DeleteObject();
  491. if (m_penDkShadow.m_hObject)
  492. m_penDkShadow.DeleteObject();
  493. if (m_penShadow.m_hObject)
  494. m_penShadow.DeleteObject();
  495. if (m_penLiteShadow.m_hObject)
  496. m_penLiteShadow.DeleteObject();
  497. } // DeletePens
  498. //-------------------------------------------------------------------
  499. //
  500. void CMacProgressCtrl::SetIndeterminate(BOOL bIndeterminate)
  501. //
  502. // Return Value: None.
  503. //
  504. // Parameters : bIndeterminate - Specifies the indeterminate state.
  505. //
  506. // Remarks : Sets the indeterminate flag.
  507. //
  508. {
  509. m_bIndeterminate = bIndeterminate;
  510. if (m_bIndeterminate)
  511. {
  512. CRect rect;
  513. GetClientRect(rect);
  514. m_nIndOffset = 0;
  515. RedrawWindow();
  516. SetTimer(IDT_INDETERMINATE, 25, NULL);
  517. }
  518. else
  519. {
  520. KillTimer(IDT_INDETERMINATE);
  521. RedrawWindow();
  522. }
  523. } // SetIndeterminate
  524. //-------------------------------------------------------------------
  525. //
  526. BOOL CMacProgressCtrl::GetIndeterminate()
  527. //
  528. // Return Value: m_bIndeterminate.
  529. //
  530. // Parameters : None.
  531. //
  532. // Remarks : Returns m_bIndeterminate.
  533. //
  534. {
  535. return m_bIndeterminate;
  536. } // GetIndeterminate
  537. //-------------------------------------------------------------------
  538. //
  539. void CMacProgressCtrl::OnTimer(UINT nIDEvent) 
  540. //
  541. // Return Value: None.
  542. //
  543. // Parameters : nIDEvent - Specifies the identifier of the timer.
  544. //
  545. // Remarks : The framework calls this member function after each 
  546. // interval specified in the SetTimer member function used 
  547. // to install a timer.
  548. //
  549. {
  550. // Increment the indeterminate bar offset and redraw the window.
  551. if (nIDEvent == IDT_INDETERMINATE)
  552. {
  553. KillTimer(nIDEvent);
  554. if (++m_nIndOffset > IND_BAND_WIDTH - 1)
  555. m_nIndOffset = 0;
  556. RedrawWindow();
  557. SetTimer(IDT_INDETERMINATE, 25, NULL);
  558. }
  559. } // OnTimer