SXBtn.cpp
上传用户:mcdz888
上传日期:2022-08-05
资源大小:118k
文件大小:2k
源码类别:

绘图程序

开发平台:

Visual C++

  1. // SXBtn.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Graphic.h"
  5. #include "SXBtn.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CSXBtn
  13. CSXBtn::CSXBtn()
  14. {
  15. }
  16. CSXBtn::~CSXBtn()
  17. {
  18. }
  19. BEGIN_MESSAGE_MAP(CSXBtn, CButton)
  20. //{{AFX_MSG_MAP(CSXBtn)
  21. // NOTE - the ClassWizard will add and remove mapping macros here.
  22. //}}AFX_MSG_MAP
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CSXBtn message handlers
  26. void CSXBtn::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
  27. {
  28. UINT uStyle = BS_DEFPUSHBUTTON ;//DFCS_BUTTONPUSH;
  29. // This code only works with buttons.
  30. ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);
  31. // If drawing selected, add the pushed style to DrawFrameControl.
  32. if (lpDrawItemStruct->itemState & ODS_SELECTED)
  33. uStyle |= DFCS_PUSHED;
  34. // Draw the button frame.
  35. ::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem, 
  36. DFC_BUTTON, uStyle);
  37. CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
  38. // Get the button's text.
  39. CString strText;
  40. GetWindowText(strText);
  41. // Draw the button text using the text color red.
  42. CBrush B;
  43. CRect rect;
  44. CRect focusRect;
  45. focusRect.CopyRect(&lpDrawItemStruct->rcItem); 
  46. DrawFocusRect(lpDrawItemStruct->hDC, (LPRECT)&focusRect);
  47. focusRect.left += 4;
  48. focusRect.right -= 4;
  49. focusRect.top += 4;
  50. focusRect.bottom -= 4;
  51. rect.CopyRect(&lpDrawItemStruct->rcItem); 
  52. pDC->Draw3dRect(rect, ::GetSysColor(COLOR_BTNSHADOW), ::GetSysColor(COLOR_BTNHILIGHT));
  53. B.CreateSolidBrush(RGB(0,255,0));
  54. ::FillRect(lpDrawItemStruct->hDC,&rect, (HBRUSH)B.m_hObject);
  55. ::SetBkMode(lpDrawItemStruct->hDC,TRANSPARENT);
  56. COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255,0,0));
  57. ::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(), 
  58. &lpDrawItemStruct->rcItem, DT_SINGLELINE|DT_VCENTER|DT_CENTER);
  59. ::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
  60. }