www.pudn.com > ObjectInspector_demo.rar > ColourPopup.h


#ifndef COLOURPOPUP_INCLUDED 
#define COLOURPOPUP_INCLUDED 
#pragma once  
 
#if _MSC_VER >= 1000 
#pragma once 
#endif // _MSC_VER >= 1000 
 
// ColourPopup.h : header file 
// 
// Written by Chris Maunder (chrismaunder@codeguru.com) 
// Extended by Alexander Bischofberger (bischofb@informatik.tu-muenchen.de) 
// Copyright (c) 1998. 
// 
// This code may be used in compiled form in any way you desire. This 
// file may be redistributed unmodified by any means PROVIDING it is  
// not sold for profit without the authors written consent, and  
// providing that this notice and the authors name is included. If  
// the source code in  this file is used in any commercial application  
// then a simple email would be nice. 
// 
// This file is provided "as is" with no expressed or implied warranty. 
// The author accepts no liability if it causes any damage whatsoever. 
// It's free - so you get what you pay for. 
 
 
// CColourPopup messages 
#define CPN_SELCHANGE        WM_USER + 1001        // Colour Picker Selection change 
#define CPN_DROPDOWN         WM_USER + 1002        // Colour Picker drop down 
#define CPN_CLOSEUP          WM_USER + 1003        // Colour Picker close up 
#define CPN_SELENDOK         WM_USER + 1004        // Colour Picker end OK 
#define CPN_SELENDCANCEL     WM_USER + 1005        // Colour Picker end (cancelled) 
 
// forward declaration 
class CColourPicker; 
 
// To hold the colours and their names 
typedef struct { 
    COLORREF crColour; 
    TCHAR    *szName; 
} ColourTableEntry; 
 
///////////////////////////////////////////////////////////////////////////// 
// CColourPopup window 
 
class CColourPopup : public CWnd 
{ 
// Construction 
public: 
    CColourPopup(); 
    CColourPopup(CPoint p, COLORREF crColour, CWnd* pParentWnd, 
                 LPCTSTR szDefaultText = NULL, LPCTSTR szCustomText = NULL); 
    void Initialise(); 
 
// Attributes 
public: 
 
// Operations 
public: 
    BOOL Create(CPoint p, COLORREF crColour, CWnd* pParentWnd,  
                LPCTSTR szDefaultText = NULL, LPCTSTR szCustomText = NULL); 
 
// Overrides 
    // ClassWizard generated virtual function overrides 
    //{{AFX_VIRTUAL(CColourPopup) 
    public: 
    virtual BOOL PreTranslateMessage(MSG* pMsg); 
    //}}AFX_VIRTUAL 
 
// Implementation 
public: 
    virtual ~CColourPopup(); 
 
protected: 
    BOOL GetCellRect(int nIndex, const LPRECT& rect); 
    void FindCellFromColour(COLORREF crColour); 
    void SetWindowSize(); 
    void CreateToolTips(); 
    void ChangeSelection(int nIndex); 
    void EndSelection(int nMessage); 
    void DrawCell(CDC* pDC, int nIndex); 
 
    COLORREF GetColour(int nIndex)              { return m_crColours[nIndex].crColour; } 
    LPCTSTR GetColourName(int nIndex)           { return m_crColours[nIndex].szName; } 
    int  GetIndex(int row, int col) const; 
    int  GetRow(int nIndex) const; 
    int  GetColumn(int nIndex) const; 
 
// protected attributes 
protected: 
    static ColourTableEntry m_crColours[]; 
    int            m_nNumColours; 
    int            m_nNumColumns, m_nNumRows; 
    int            m_nBoxSize, m_nMargin; 
    int            m_nCurrentSel; 
    int            m_nChosenColourSel; 
    CString        m_strDefaultText; 
    CString        m_strCustomText; 
    CRect          m_CustomTextRect, m_DefaultTextRect, m_WindowRect; 
    CFont          m_Font; 
    CPalette       m_Palette; 
    COLORREF       m_crInitialColour, m_crColour; 
    CToolTipCtrl   m_ToolTip; 
    CWnd*          m_pParent; 
 
    BOOL           m_bChildWindowVisible; 
 
    // Generated message map functions 
protected: 
    //{{AFX_MSG(CColourPopup) 
    afx_msg void OnNcDestroy(); 
    afx_msg void OnLButtonUp(UINT nFlags, CPoint point); 
    afx_msg void OnPaint(); 
    afx_msg void OnMouseMove(UINT nFlags, CPoint point); 
    afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); 
    afx_msg BOOL OnQueryNewPalette(); 
    afx_msg void OnPaletteChanged(CWnd* pFocusWnd); 
	afx_msg void OnKillFocus(CWnd* pNewWnd); 
	afx_msg void OnActivateApp(BOOL bActive, HTASK hTask); 
	//}}AFX_MSG 
    DECLARE_MESSAGE_MAP() 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Developer Studio will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_COLOURPOPUP_H__D0B75902_9830_11D1_9C0F_00A0243D1382__INCLUDED_)