»õ ÆÄÀÏ |
| | |
| | | ///////////////////////////////////////////////////////////////////////////// |
| | | // GridCellBase.h : header file |
| | | // |
| | | // MFC Grid Control - Grid cell base class header file |
| | | // |
| | | // Written by Chris Maunder <chris@codeproject.com> |
| | | // Copyright (c) 1998-2005. All Rights Reserved. |
| | | // |
| | | // 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 and all copyright |
| | | // notices remains intact. |
| | | // |
| | | // An email letting me know how you are using it would be nice as well. |
| | | // |
| | | // This file is provided "as is" with no expressed or implied warranty. |
| | | // The author accepts no liability for any damage/loss of business that |
| | | // this product may cause. |
| | | // |
| | | // For use with CGridCtrl v2.22+ |
| | | // |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | | #if !defined(AFX_GRIDCELLBASE_H__519FA702_722C_11D1_ABBA_00A0243D1382__INCLUDED_) |
| | | #define AFX_GRIDCELLBASE_H__519FA702_722C_11D1_ABBA_00A0243D1382__INCLUDED_ |
| | | |
| | | #if _MSC_VER >= 1000 |
| | | #pragma once |
| | | #endif // _MSC_VER >= 1000 |
| | | |
| | | class CakGridCtrl; |
| | | |
| | | // Cell states |
| | | #define GVIS_FOCUSED 0x0001 |
| | | #define GVIS_SELECTED 0x0002 |
| | | #define GVIS_DROPHILITED 0x0004 |
| | | #define GVIS_READONLY 0x0008 |
| | | #define GVIS_FIXED 0x0010 |
| | | #define GVIS_FIXEDROW 0x0020 |
| | | #define GVIS_FIXEDCOL 0x0040 |
| | | #define GVIS_MODIFIED 0x0080 |
| | | |
| | | // Cell data mask |
| | | #define GVIF_TEXT LVIF_TEXT |
| | | #define GVIF_IMAGE LVIF_IMAGE |
| | | #define GVIF_PARAM LVIF_PARAM |
| | | #define GVIF_STATE LVIF_STATE |
| | | #define GVIF_BKCLR (GVIF_STATE<<1) |
| | | #define GVIF_FGCLR (GVIF_STATE<<2) |
| | | #define GVIF_FORMAT (GVIF_STATE<<3) |
| | | #define GVIF_FONT (GVIF_STATE<<4) |
| | | #define GVIF_MARGIN (GVIF_STATE<<5) |
| | | #define GVIF_ALL (GVIF_TEXT|GVIF_IMAGE|GVIF_PARAM|GVIF_STATE|GVIF_BKCLR|GVIF_FGCLR| \ |
| | | GVIF_FORMAT|GVIF_FONT|GVIF_MARGIN) |
| | | |
| | | // Used for Get/SetItem calls. |
| | | typedef struct _GV_ITEM { |
| | | int row,col; // Row and Column of item |
| | | UINT mask; // Mask for use in getting/setting cell data |
| | | UINT nState; // cell state (focus/hilighted etc) |
| | | DWORD nFormat; // Format of cell |
| | | int iImage; // index of the list view itemë© icon |
| | | COLORREF crBkClr; // Background colour (or CLR_DEFAULT) |
| | | COLORREF crFgClr; // Forground colour (or CLR_DEFAULT) |
| | | LPARAM lParam; // 32-bit value to associate with item |
| | | LOGFONT lfFont; // Cell font |
| | | UINT nMargin; // Internal cell margin |
| | | CString strText; // Text in cell |
| | | } GV_ITEM; |
| | | |
| | | |
| | | // Each cell contains one of these. Fields "row" and "column" are not stored since we |
| | | // will usually have acces to them in other ways, and they are an extra 8 bytes per |
| | | // cell that is probably unnecessary. |
| | | |
| | | #define TRACEAK(fmt,...) |
| | | //#define TRACEAK(fmt,...) TRACEAK(fmt,##__VA_ARGS__) |
| | | |
| | | class CGridCellBase : public CObject |
| | | { |
| | | friend class CakGridCtrl; |
| | | DECLARE_DYNAMIC(CGridCellBase) |
| | | |
| | | // Construction/Destruction |
| | | public: |
| | | CGridCellBase(); |
| | | virtual ~CGridCellBase(); |
| | | |
| | | // Attributes |
| | | public: |
| | | virtual void SetText(LPCTSTR /* szText */) = 0 ; |
| | | virtual void SetImage(int /* nImage */) = 0 ; |
| | | virtual void SetData(LPARAM /* lParam */) = 0 ; |
| | | virtual void SetState(DWORD nState) { m_nState = nState; } |
| | | virtual void SetFormat(DWORD /* nFormat */) = 0 ; |
| | | virtual void SetTextClr(COLORREF /* clr */) = 0 ; |
| | | virtual void SetBackClr(COLORREF /* clr */) = 0 ; |
| | | virtual void SetFont(const LOGFONT* /* plf */) = 0 ; |
| | | virtual void SetMargin( UINT /* nMargin */) = 0 ; |
| | | virtual void SetGrid(CakGridCtrl* /* pGrid */) = 0 ; |
| | | virtual void SetCoords( int /* nRow */, int /* nCol */) = 0 ; |
| | | |
| | | virtual LPCTSTR GetText() const = 0 ; |
| | | virtual LPCTSTR GetTipText() const { return GetText(); } // may override TitleTip return |
| | | virtual int GetImage() const = 0 ; |
| | | virtual LPARAM GetData() const = 0 ; |
| | | virtual DWORD GetState() const { return m_nState; } |
| | | virtual DWORD GetFormat() const = 0 ; |
| | | virtual COLORREF GetTextClr() const = 0 ; |
| | | virtual COLORREF GetBackClr() const = 0 ; |
| | | virtual LOGFONT * GetFont() const = 0 ; |
| | | virtual CFont * GetFontObject() const = 0 ; |
| | | virtual CakGridCtrl* GetGrid() const = 0 ; |
| | | virtual CWnd * GetEditWnd() const = 0 ; |
| | | virtual UINT GetMargin() const = 0 ; |
| | | |
| | | virtual CGridCellBase* GetDefaultCell() const; |
| | | |
| | | virtual BOOL IsDefaultFont() const = 0 ; |
| | | virtual BOOL IsEditing() const = 0 ; |
| | | virtual BOOL IsFocused() const { return (m_nState & GVIS_FOCUSED); } |
| | | virtual BOOL IsFixed() const { return (m_nState & GVIS_FIXED); } |
| | | virtual BOOL IsFixedCol() const { return (m_nState & GVIS_FIXEDCOL); } |
| | | virtual BOOL IsFixedRow() const { return (m_nState & GVIS_FIXEDROW); } |
| | | virtual BOOL IsSelected() const { return (m_nState & GVIS_SELECTED); } |
| | | virtual BOOL IsReadOnly() const { return (m_nState & GVIS_READONLY); } |
| | | virtual BOOL IsModified() const { return (m_nState & GVIS_MODIFIED); } |
| | | virtual BOOL IsDropHighlighted() const { return (m_nState & GVIS_DROPHILITED); } |
| | | |
| | | // Operators |
| | | public: |
| | | virtual void operator=(const CGridCellBase& cell); |
| | | |
| | | // Operations |
| | | public: |
| | | virtual void Reset(); |
| | | |
| | | virtual BOOL Draw(CDC* pDC, int nRow, int nCol, CRect rect, BOOL bEraseBkgnd = TRUE); |
| | | virtual BOOL GetTextRect( LPRECT pRect); // i/o: i=dims of cell rect; o=dims of text rect |
| | | virtual BOOL GetTipTextRect( LPRECT pRect) { return GetTextRect( pRect); } // may override for btns, etc. |
| | | virtual CSize GetTextExtent(LPCTSTR str, CDC* pDC = NULL); |
| | | virtual CSize GetCellExtent(CDC* pDC); |
| | | |
| | | // Editing |
| | | virtual BOOL Edit( int /* nRow */, int /* nCol */, CRect /* rect */, CPoint /* point */, |
| | | UINT /* nID */, UINT /* nChar */) { ASSERT( FALSE); return FALSE;} |
| | | virtual BOOL ValidateEdit(LPCTSTR str); |
| | | virtual void EndEdit() {} |
| | | |
| | | // EFW - Added to print cells properly |
| | | virtual BOOL PrintCell(CDC* pDC, int nRow, int nCol, CRect rect); |
| | | |
| | | // add additional protected grid members required of cells |
| | | LRESULT SendMessageToParent(int nRow, int nCol, int nMessage); |
| | | |
| | | protected: |
| | | virtual void OnEndEdit(); |
| | | virtual void OnMouseEnter(); |
| | | virtual void OnMouseOver(); |
| | | virtual void OnMouseLeave(); |
| | | virtual void OnClick( CPoint PointCellRelative); |
| | | virtual void OnClickDown( CPoint PointCellRelative); |
| | | virtual void OnRClick( CPoint PointCellRelative); |
| | | virtual void OnDblClick( CPoint PointCellRelative); |
| | | virtual BOOL OnSetCursor(); |
| | | |
| | | protected: |
| | | DWORD m_nState; // Cell state (selected/focus etc) |
| | | }; |
| | | |
| | | //{{AFX_INSERT_LOCATION}} |
| | | // Microsoft Developer Studio will insert additional declarations immediately before the previous line. |
| | | |
| | | #endif // !defined(AFX_GRIDCELLBASE_H__519FA702_722C_11D1_ABBA_00A0243D1382__INCLUDED_) |