ColorBtn.cpp
上传用户:lj3531212
上传日期:2007-06-18
资源大小:346k
文件大小:2k
源码类别:

绘图程序

开发平台:

Visual C++

  1. // ColorBtn.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "graphsoft.h"
  5. #include "ColorBtn.h"
  6. #include "ColorSetDlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CColorBtn
  14. CColorBtn::CColorBtn()
  15. {
  16. m_pColorSetDlg=new CColorSetDlg(0,this);
  17. m_pColorSetDlg->Create(CColorSetDlg::IDD,this);
  18. m_color=RGB(0,255,0);
  19. }
  20. CColorBtn::~CColorBtn()
  21. {
  22. delete m_pColorSetDlg;
  23. }
  24. BEGIN_MESSAGE_MAP(CColorBtn, CButton)
  25. //{{AFX_MSG_MAP(CColorBtn)
  26. ON_CONTROL_REFLECT(BN_CLICKED, OnClicked)
  27. ON_MESSAGE(WM_SETCOLOR,OnSetColor)
  28. //}}AFX_MSG_MAP
  29. END_MESSAGE_MAP()
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CColorBtn message handlers
  32. void CColorBtn::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
  33. {
  34. // TODO: Add your code to draw the specified item
  35. CRect rect=lpDrawItemStruct->rcItem;
  36. CDC *pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
  37. CBrush brush,*pOldBrush;
  38. if(this->IsWindowEnabled()){
  39. brush.CreateSolidBrush(m_color);
  40. }else{
  41. brush.CreateSolidBrush(RGB(180,180,180));//没有被激活
  42. }
  43. pOldBrush=pDC->SelectObject(&brush);
  44. pDC->Rectangle(&rect);
  45. pDC->SelectObject(pOldBrush);
  46. }
  47. void CColorBtn::OnClicked() 
  48. {
  49. // TODO: Add your control notification handler code here
  50. CRect rect;
  51. GetWindowRect(&rect);
  52. m_pColorSetDlg->SetWindowPos(&wndTopMost, rect.left,rect.bottom, 0, 0, SWP_NOSIZE|SWP_NOZORDER);
  53. m_pColorSetDlg->ShowWindow(SW_SHOW);
  54. m_pColorSetDlg->SetFocus();
  55. }
  56. void CColorBtn::OnSetColor(WPARAM wParam,LPARAM lParam)
  57. {
  58. COLORREF color=(COLORREF)wParam;
  59. m_color=color;
  60. this->Invalidate(TRUE);
  61. }