OAMTOOLBAR.CPP
上传用户:shgx688
上传日期:2009-12-27
资源大小:855k
文件大小:2k
源码类别:

SNMP编程

开发平台:

MultiPlatform

  1. // OAMToolBar.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "OAM.h"
  5. #include "OAMToolBar.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. extern CBrush m_brBk;
  12. extern COLORREF _clrText;
  13. extern HBITMAP hBkBitmap;
  14. /////////////////////////////////////////////////////////////////////////////
  15. // COAMToolBar
  16. IMPLEMENT_DYNAMIC(COAMToolBar, CToolBar)
  17. COAMToolBar::COAMToolBar()
  18. {
  19. }
  20. COAMToolBar::~COAMToolBar()
  21. {
  22. }
  23. BEGIN_MESSAGE_MAP(COAMToolBar, CToolBar)
  24. //{{AFX_MSG_MAP(COAMToolBar)
  25. // NOTE - the ClassWizard will add and remove mapping macros here.
  26. //}}AFX_MSG_MAP
  27. ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
  28. END_MESSAGE_MAP()
  29. /////////////////////////////////////////////////////////////////////////////
  30. // COAMToolBar message handlers
  31. void COAMToolBar::OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult)
  32. {
  33. NMTBCUSTOMDRAW *pTVCD = (NMTBCUSTOMDRAW*)pNMHDR;
  34. CDC* pDC = CDC::FromHandle(pTVCD->nmcd.hdc);
  35. // The rect for the cell gives correct left and right values.
  36. CRect rect = pTVCD->nmcd.rc;
  37. pTVCD->clrText = _clrText;
  38. pTVCD->hbrLines  = m_brBk;
  39. pTVCD->hbrMonoDither = m_brBk;
  40. // By default set the return value to do the default behavior.
  41. *pResult = 0;
  42. switch( pTVCD->nmcd.dwDrawStage )
  43. {
  44. // First stage (for the whole control)
  45. case  CDDS_PREPAINT: 
  46. {
  47. *pResult = CDRF_NOTIFYITEMDRAW;
  48. }
  49. break;
  50. // Stage three (called for each subitem of the focused item)
  51. case CDDS_ITEMPREPAINT | CDDS_SUBITEM: 
  52. {
  53. *pResult = CDRF_NOTIFYSUBITEMDRAW | CDRF_NOTIFYPOSTPAINT;
  54. }
  55. break;
  56. // Stage four (called for each subitem of the focused item)
  57. case CDDS_ITEMPOSTPAINT | CDDS_SUBITEM: 
  58. {
  59. *pResult = CDRF_SKIPDEFAULT;
  60. }
  61. break;
  62. default: 
  63. // Stage two handled here. (called for each item)
  64. if (pTVCD->nmcd.uItemState & CDIS_HOT)
  65. {
  66. // Tell the control that to draw it again.
  67. *pResult = CDRF_NOTIFYPOSTPAINT;
  68. }
  69. if( (pTVCD->nmcd.uItemState & CDIS_FOCUS) || pTVCD->nmcd.uItemState & CDIS_SELECTED)
  70. {
  71. *pResult = CDRF_NOTIFYPOSTPAINT;
  72. }
  73. if( (pTVCD->nmcd.uItemState & CDIS_CHECKED) )
  74. {
  75. *pResult = CDRF_DODEFAULT;
  76. }
  77. break;
  78. }
  79. CDC::DeleteTempMap( );
  80. }