ColourPopup.h
上传用户:wujian85
上传日期:2010-04-08
资源大小:227k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. #if !defined(AFX_COLOURPOPUP_H__D0B75902_9830_11D1_9C0F_00A0243D1382__INCLUDED_)
  2. #define AFX_COLOURPOPUP_H__D0B75902_9830_11D1_9C0F_00A0243D1382__INCLUDED_
  3. #if _MSC_VER >= 1000
  4. #pragma once
  5. #endif // _MSC_VER >= 1000
  6. // ColourPopup.h : header file
  7. //
  8. // Written by Chris Maunder (Chris.Maunder@cbr.clw.csiro.au)
  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. // CColourPopup messages
  23. #define CPN_SELCHANGE        WM_USER + 1001        // Colour Picker Selection change
  24. #define CPN_DROPDOWN         WM_USER + 1002        // Colour Picker drop down
  25. #define CPN_CLOSEUP          WM_USER + 1003        // Colour Picker close up
  26. #define CPN_SELENDOK         WM_USER + 1004        // Colour Picker end OK
  27. #define CPN_SELENDCANCEL     WM_USER + 1005        // Colour Picker end (cancelled)
  28. // forward declaration
  29. class CColourPicker;
  30. // To hold the colours and their names
  31. typedef struct {
  32.     COLORREF crColour;
  33.     TCHAR    *szName;
  34. } ColourTableEntry;
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CColourPopup window
  37. class CColourPopup : public CWnd
  38. {
  39. // Construction
  40. public:
  41.     CColourPopup();
  42.     CColourPopup(CPoint p, COLORREF crColour, CWnd* pParentWnd, UINT nID, 
  43.                  LPCTSTR szCustomText = NULL);
  44.     void Initialise();
  45. // Attributes
  46. public:
  47. // Operations
  48. public:
  49.     BOOL Create(CPoint p, COLORREF crColour, CWnd* pParentWnd, UINT nID, 
  50.                 LPCTSTR szCustomText = NULL);
  51. // Overrides
  52.     // ClassWizard generated virtual function overrides
  53.     //{{AFX_VIRTUAL(CColourPopup)
  54.     public:
  55.     virtual BOOL PreTranslateMessage(MSG* pMsg);
  56.     //}}AFX_VIRTUAL
  57. // Implementation
  58. public:
  59.     virtual ~CColourPopup();
  60. protected:
  61.     BOOL GetCellRect(int row, int col, const LPRECT& rect);
  62.     void FindCellFromColour(COLORREF crColour);
  63.     void SetWindowSize();
  64.     void CreateToolTips();
  65.     void ChangeSelection(int row, int col);
  66.     void EndSelection(int nMessage);
  67.     void DrawCell(CDC* pDC, int row, int col);
  68.     COLORREF GetColour(int row, int col) { return m_crColours[row*m_nNumColumns + col].crColour; }
  69.     LPCTSTR GetColourName(int row, int col) { return m_crColours[row*m_nNumColumns + col].szName; }
  70. // protected attributes
  71. protected:
  72.     static ColourTableEntry m_crColours[];
  73.     int            m_nNumColours;
  74.     int            m_nNumColumns, m_nNumRows;
  75.     int            m_nBoxSize, m_nMargin;
  76.     int            m_nCurrentRow, m_nCurrentCol;
  77.     int            m_nChosenColourRow, m_nChosenColourCol;
  78.     BOOL           m_bShowCustom;
  79.     CString        m_strCustomText;
  80.     CRect          m_TextRect, m_WindowRect;
  81.     CFont          m_Font;
  82.     CPalette       m_Palette;
  83.     COLORREF       m_crInitialColour, m_crColour;
  84.     CToolTipCtrl   m_ToolTip;
  85.     CWnd*          m_pParent;
  86.     // Generated message map functions
  87. protected:
  88.     //{{AFX_MSG(CColourPopup)
  89.     afx_msg void OnNcDestroy();
  90.     afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  91.     afx_msg void OnPaint();
  92.     afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  93.     afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  94.     afx_msg BOOL OnQueryNewPalette();
  95.     afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
  96.     //}}AFX_MSG
  97.     DECLARE_MESSAGE_MAP()
  98. };
  99. /////////////////////////////////////////////////////////////////////////////
  100. //{{AFX_INSERT_LOCATION}}
  101. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  102. #endif // !defined(AFX_COLOURPOPUP_H__D0B75902_9830_11D1_9C0F_00A0243D1382__INCLUDED_)