| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- #pragma once
- #include <afx.h>
- #include "CellRange.h" // Added by ClassView
- class CGridCtrl;
- // 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_BORDER (GVIF_STATE<<6) // BORDER
- #define GVIF_BORDERCLR (GVIF_STATE<<7) // BORDER CLR
- #define GVIF_ALL (GVIF_TEXT|GVIF_IMAGE|GVIF_PARAM|GVIF_STATE|GVIF_BKCLR|GVIF_FGCLR| \
- GVIF_FORMAT|GVIF_FONT|GVIF_MARGIN|GVIF_BORDER)
- // CELL Border States
- #define GVIS_BDR_TOP 0X0001
- #define GVIS_BDR_RIGHT 0x0002
- #define GVIS_BDR_BOTTOM 0x0004
- #define GVIS_BDR_LEFT 0x0008
- // 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’s icon
- COLORREF crBkClr; // Background colour (or CLR_DEFAULT)
- COLORREF crFgClr; // Forground colour (or CLR_DEFAULT)
- UINT nBorder; // Border
- COLORREF crBorderClr; // Border Color
- 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.
- class CGridCellBase : public CObject
- {
- friend class CGridCtrl;
- 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(CGridCtrl* /* pGrid */) = 0;
- virtual void SetCoords(int /* nRow */, int /* nCol */) = 0;
- /*************************************************/
- virtual void SetBorderClr(COLORREF /* clr */) = 0;
- virtual void SetBorder(UINT /* BdrState */) = 0;
- virtual COLORREF GetBorderClr() const = 0;
- virtual UINT GetBorder() const = 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 CGridCtrl* 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=(CGridCellBase& cell);
- // Operations
- public:
- bool IsMerged();
- void SetMergeRange(CCellRange range);
- void Show(bool IsShow);
- 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();
- public:
- void UnMerge();
- virtual bool IsShow();
- virtual CCellRange GetMergeRange();
- virtual bool IsMergeWithOthers();
- virtual CCellID GetMergeCellID();
- virtual void SetMergeCellID(CCellID cell);
- protected:
- DWORD m_nState; // Cell state (selected/focus etc)
- private:
- CCellRange m_MergeRange;
- bool m_IsMergeWithOthers;
- CCellID m_MergeCellID;
- bool m_Hide;
- };
|