ColourPopup.h
上传用户:kssdz899
上传日期:2007-01-08
资源大小:79k
文件大小:4k
源码类别:

钩子与API截获

开发平台:

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 (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. // 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,
  43.                  LPCTSTR szDefaultText = NULL, LPCTSTR szCustomText = NULL);
  44.     void Initialise();
  45. // Attributes
  46. public:
  47. // Operations
  48. public:
  49.     BOOL Create(CPoint p, COLORREF crColour, CWnd* pParentWnd, 
  50.                 LPCTSTR szDefaultText = NULL, 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 nIndex, const LPRECT& rect);
  62.     void FindCellFromColour(COLORREF crColour);
  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 GetColour(int nIndex)              { return m_crColours[nIndex].crColour; }
  69.     LPCTSTR GetColourName(int nIndex)           { return m_crColours[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 ColourTableEntry m_crColours[];
  76.     int            m_nNumColours;
  77.     int            m_nNumColumns, m_nNumRows;
  78.     int            m_nBoxSize, m_nMargin;
  79.     int            m_nCurrentSel;
  80.     int            m_nChosenColourSel;
  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_crInitialColour, m_crColour;
  87.     CToolTipCtrl   m_ToolTip;
  88.     CWnd*          m_pParent;
  89.     BOOL           m_bChildWindowVisible;
  90.     // Generated message map functions
  91. protected:
  92.     //{{AFX_MSG(CColourPopup)
  93.     afx_msg void OnNcDestroy();
  94.     afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  95.     afx_msg void OnPaint();
  96.     afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  97.     afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  98.     afx_msg BOOL OnQueryNewPalette();
  99.     afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
  100. afx_msg void OnKillFocus(CWnd* pNewWnd);
  101. afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
  102. //}}AFX_MSG
  103.     DECLARE_MESSAGE_MAP()
  104. };
  105. /////////////////////////////////////////////////////////////////////////////
  106. //{{AFX_INSERT_LOCATION}}
  107. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  108. #endif // !defined(AFX_COLOURPOPUP_H__D0B75902_9830_11D1_9C0F_00A0243D1382__INCLUDED_)