ColorEdit.cpp
上传用户:zm80169
上传日期:2007-01-15
资源大小:6k
文件大小:2k
源码类别:

图形图像处理

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "ColorEdit.h"
  3. #include "RGB.h"
  4. CColorEdit::CColorEdit()
  5. {
  6. }
  7. CColorEdit::~CColorEdit()
  8. {
  9. }
  10. BEGIN_MESSAGE_MAP(CColorEdit, CEdit)
  11. //{{AFX_MSG_MAP(CColorEdit)
  12. ON_WM_MOUSEMOVE()
  13. ON_WM_TIMER()
  14. ON_WM_CTLCOLOR()
  15. //}}AFX_MSG_MAP
  16. END_MESSAGE_MAP()
  17. BOOL CColorEdit::OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult) 
  18. {
  19.         if (message != WM_CTLCOLOREDIT)
  20.         {
  21.                  return CEdit::OnChildNotify(message,wParam,lParam,pLResult);
  22.         }
  23.         HDC hdcChild = (HDC)wParam;
  24.         if( m_bOverControl )
  25.         {
  26.                 SetTextColor(hdcChild, m_crHotFg);
  27.                 SetBkColor(hdcChild, m_crHotBg);
  28.                 *pLResult = (LRESULT)(m_pHotBrush->GetSafeHandle());
  29.         }
  30.         else
  31.         {
  32.                 SetTextColor(hdcChild, m_crFg);
  33.                 SetBkColor(hdcChild, m_crBg);
  34.                 *pLResult = (LRESULT)(m_pBrush->GetSafeHandle());
  35.         }
  36.         return TRUE;
  37. void CColorEdit::OnMouseMove(UINT nFlags, CPoint point) 
  38. {
  39.         if (!m_bOverControl)
  40.         {
  41.                 m_bOverControl = TRUE;
  42.                 Invalidate();
  43.                 SetTimer(m_nTimerID, m_iRolloverDelay, NULL);
  44.         }
  45. CEdit::OnMouseMove(nFlags, point);
  46. }
  47. void CColorEdit::OnTimer(UINT nIDEvent) 
  48. {
  49.         CPoint p(GetMessagePos());
  50.         ScreenToClient(&p);
  51.         CRect rect;
  52.         GetClientRect(rect);
  53.         if (!rect.PtInRect(p))
  54.         {
  55.                 m_bOverControl = FALSE;
  56.                 KillTimer(m_nTimerID);
  57.                 Invalidate();
  58.         }
  59. CEdit::OnTimer(nIDEvent);
  60. }
  61. HBRUSH CColorEdit::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
  62. {
  63. HBRUSH hbr = CEdit::OnCtlColor(pDC, pWnd, nCtlColor);
  64.         if( m_bOverControl )
  65.         {
  66.                 pDC->SetTextColor(m_crHotFg);
  67.                 pDC->SetBkColor(m_crHotBg);
  68.                 hbr = *m_pHotBrush;
  69.         }
  70.         else
  71.         {
  72.                 pDC->SetTextColor(m_crFg);
  73.                 pDC->SetBkColor(m_crBg);
  74.                 hbr = *m_pBrush;
  75.         }
  76. return hbr;
  77. }