CJColorPopup.h
上传用户:xmgzsj
上传日期:2007-01-01
资源大小:46k
文件大小:4k
源码类别:

组合框控件

开发平台:

Visual C++

  1. #ifndef __CJCOLORPOPUP_H__
  2. #define __CJCOLORPOPUP_H__
  3. #if _MSC_VER >= 1000
  4. #pragma once
  5. #endif // _MSC_VER >= 1000
  6. // CJColorPopup.h : header file
  7. //
  8. // Written by Chris Maunder (chrismaunder@codeguru.com)
  9. // Extended by Alexander Bischofberger (bischofb@informatik.tu-muenchen.de)
  10. // Copyright (c) 1998.
  11. //
  12. // This code may be used in compiled form in any way you desire. This
  13. // file may be redistributed unmodified by any means PROVIDING it is 
  14. // not sold for profit without the authors written consent, and 
  15. // providing that this notice and the authors name is included. If 
  16. // the source code in  this file is used in any commercial application 
  17. // then a simple email would be nice.
  18. //
  19. // This file is provided "as is" with no expressed or implied warranty.
  20. // The author accepts no liability if it causes any damage whatsoever.
  21. // It's free - so you get what you pay for.
  22. // CCJColorPopup messages
  23. #define CPN_SELCHANGE        WM_USER + 1001        // Color Picker Selection change
  24. #define CPN_DROPDOWN         WM_USER + 1002        // Color Picker drop down
  25. #define CPN_CLOSEUP          WM_USER + 1003        // Color Picker close up
  26. #define CPN_SELENDOK         WM_USER + 1004        // Color Picker end OK
  27. #define CPN_SELENDCANCEL     WM_USER + 1005        // Color Picker end (cancelled)
  28. // forward declaration
  29. class CColorPicker;
  30. // To hold the Colors and their names
  31. typedef struct {
  32.     COLORREF crColor;
  33.     TCHAR    *szName;
  34. } ColorTableEntry;
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CCJColorPopup window
  37. class CCJColorPopup : public CWnd
  38. {
  39. // Construction
  40. public:
  41.     CCJColorPopup();
  42.     CCJColorPopup(CPoint p, COLORREF crColor, CWnd* pParentWnd,
  43.                  LPCTSTR szDefaultText = NULL, LPCTSTR szCustomText = NULL);
  44.     void Initialise();
  45. // Attributes
  46. public:
  47. // Operations
  48. public:
  49.     BOOL Create(CPoint p, COLORREF crColor, CWnd* pParentWnd, 
  50.                 LPCTSTR szDefaultText = NULL, LPCTSTR szCustomText = NULL);
  51. // Overrides
  52.     // ClassWizard generated virtual function overrides
  53.     //{{AFX_VIRTUAL(CCJColorPopup)
  54.     public:
  55.     virtual BOOL PreTranslateMessage(MSG* pMsg);
  56.     //}}AFX_VIRTUAL
  57. // Implementation
  58. public:
  59.     virtual ~CCJColorPopup();
  60. protected:
  61.     BOOL GetCellRect(int nIndex, const LPRECT& rect);
  62.     void FindCellFromColor(COLORREF crColor);
  63.     void SetWindowSize();
  64.     void CreateToolTips();
  65.     void ChangeSelection(int nIndex);
  66.     void EndSelection(int nMessage);
  67.     void DrawCell(CDC* pDC, int nIndex);
  68.     COLORREF GetColor(int nIndex)              { return m_crColors[nIndex].crColor; }
  69.     LPCTSTR GetColorName(int nIndex)           { return m_crColors[nIndex].szName; }
  70.     int  GetIndex(int row, int col) const;
  71.     int  GetRow(int nIndex) const;
  72.     int  GetColumn(int nIndex) const;
  73. // protected attributes
  74. protected:
  75.     static ColorTableEntry m_crColors[];
  76.     int            m_nNumColors;
  77.     int            m_nNumColumns, m_nNumRows;
  78.     int            m_nBoxSize, m_nMargin;
  79.     int            m_nCurrentSel;
  80.     int            m_nChosenColorSel;
  81.     CString        m_strDefaultText;
  82.     CString        m_strCustomText;
  83.     CRect          m_CustomTextRect, m_DefaultTextRect, m_WindowRect;
  84.     CFont          m_Font;
  85.     CPalette       m_Palette;
  86.     COLORREF       m_crInitialColor, m_crColor;
  87.     CToolTipCtrl   m_ToolTip;
  88.     CWnd*          m_pParent;
  89.     // Generated message map functions
  90. protected:
  91.     //{{AFX_MSG(CCJColorPopup)
  92.     afx_msg void OnNcDestroy();
  93.     afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  94.     afx_msg void OnPaint();
  95.     afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  96.     afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  97.     afx_msg BOOL OnQueryNewPalette();
  98.     afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
  99. afx_msg void OnKillFocus(CWnd* pNewWnd);
  100. afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
  101. //}}AFX_MSG
  102.     DECLARE_MESSAGE_MAP()
  103. };
  104. /////////////////////////////////////////////////////////////////////////////
  105. //{{AFX_INSERT_LOCATION}}
  106. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  107. #endif // !defined(__CJCOLORPOPUP_H__)