GridCtrl.h
资源名称:MyStock.rar [点击查看]
上传用户:wenjimin
上传日期:2014-08-12
资源大小:111k
文件大小:11k
源码类别:
金融证券系统
开发平台:
Visual C++
- #if !defined(AFX_GRIDCTRL_H__768A7058_3D28_11D8_B617_A69FB0BE0671__INCLUDED_)
- #define AFX_GRIDCTRL_H__768A7058_3D28_11D8_B617_A69FB0BE0671__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- // GridCtrl.h : header file
- //
- // Grid line/scrollbar selection
- #define GVL_NONE 0L // Neither
- #define GVL_HORZ 1L // Horizontal line or scrollbar
- #define GVL_VERT 2L // Vertical line or scrollbar
- #define GVL_BOTH 3L // Both
- #include "GridDefaultCell.h"
- #include "CellRange.h"
- //#include "GridCell.h"
- #include <afxtempl.h>//为了使用数组和Map
- class CMyGridFrame;
- // storage typedef for each row in the grid
- typedef CTypedPtrArray<CObArray, CGridCellBase*> GRID_ROW;
- /////////////////////////////////////////////////////////////////////////////
- // CGridCtrl window
- class CGridCtrl : public CWnd
- {
- DECLARE_DYNCREATE(CGridCtrl)
- // Construction
- public:
- CGridCtrl(int nRows = 0, int nCols = 0, int nFixedRows = 0, int nFixedCols = 0);
- // Attributes
- public:
- BOOL SetRowCount(int nRows = 10);//设置总行数,缺省为10
- BOOL SetColumnCount(int nCols = 10);//设置总列数
- BOOL SetFixedRowCount(int nFixedRows = 1);//设置固定行数
- BOOL SetFixedColumnCount(int nFixedCols = 1);//固定列数
- int GetRowCount() const { return m_nRows; }//返回...
- int GetColumnCount() const { return m_nCols; }
- int GetFixedRowCount() const { return m_nFixedRows; }
- int GetFixedColumnCount() const { return m_nFixedCols; }
- void SetHeaderSort(BOOL bSortOnClick = TRUE){ m_bSortOnClick = bSortOnClick; }
- BOOL GetHeaderSort() const { return m_bSortOnClick; }
- int GetRowHeight(int nRow) const;//返回行高
- BOOL SetRowHeight(int row, int height);//设置行高
- int GetColumnWidth(int nCol) const;//列宽
- BOOL SetColumnWidth(int col, int width);//..
- int GetFixedRowHeight() const;
- int GetFixedColumnWidth() const;
- long GetVirtualWidth() const;
- long GetVirtualHeight() const;
- //关于操作
- BOOL IsValid(int nRow, int nCol) const;//合法性检验
- BOOL IsValid(const CCellID& cell) const;
- BOOL IsValid(const CCellRange& range) const;
- BOOL IsCellVisible(int nRow, int nCol);
- BOOL IsCellVisible(CCellID cell);
- BOOL GetCellOrigin(int nRow, int nCol, LPPOINT p);
- BOOL GetCellOrigin(const CCellID& cell, LPPOINT p);
- BOOL GetCellRect(int nRow, int nCol, LPRECT pRect);
- BOOL GetCellRect(const CCellID& cell, LPRECT pRect);
- BOOL MouseOverColumnResizeArea(CPoint& point);
- void ClearCells();
- CCellID GetCellFromPt(CPoint point, BOOL bAllowFixedCellCheck = TRUE);//从鼠标点得到单元格ID
- CGridCellBase* GetCell(int nRow, int nCol) const; // Get the actual cell!
- void Refresh();
- //排序:
- virtual void OnFixedRowClick(CCellID& cell);
- BOOL SortItems(int nCol, BOOL bAscending, LPARAM data = 0);
- BOOL SortTextItems(int nCol, BOOL bAscending, LPARAM data = 0);
- BOOL SortItems(PFNLVCOMPARE pfnCompare, int nCol, BOOL bAscending, LPARAM data = 0);
- BOOL SortItems(PFNLVCOMPARE pfnCompare, int nCol, BOOL bAscending, LPARAM data,
- int low, int high);
- // in-built sort functions 内联排序函数
- static int CALLBACK pfnCellTextCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
- static int CALLBACK pfnCellNumericCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
- void SetSortColumn(int nCol);//设置排序的列
- int GetSortColumn() const { return m_nSortColumn; }
- BOOL GetSortAscending() const { return m_bAscending; }
- void SetSortAscending(BOOL bAscending) { m_bAscending = bAscending; }
- // ***************************************************************************** //
- // These have been deprecated. Use GetDefaultCell and then set the colors
- void SetTextColor(COLORREF clr) { m_cellDefault.SetTextClr(clr); }
- COLORREF GetTextColor() { return m_cellDefault.GetTextClr(); }
- void SetTextBkColor(COLORREF clr) { m_cellDefault.SetBackClr(clr); }
- COLORREF GetTextBkColor() { return m_cellDefault.GetBackClr(); }
- void SetFixedTextColor(COLORREF clr) { m_cellFixedRowDef.SetTextClr(clr);
- m_cellFixedColDef.SetTextClr(clr);
- m_cellFixedRowColDef.SetTextClr(clr); }
- COLORREF GetFixedTextColor() const { return m_cellFixedRowDef.GetTextClr(); }
- void SetFixedBkColor(COLORREF clr) { m_cellFixedRowDef.SetBackClr(clr);
- m_cellFixedColDef.SetBackClr(clr);
- m_cellFixedRowColDef.SetBackClr(clr); }
- void SetGridBkColor(COLORREF clr) { m_crGridBkColour = clr; }
- COLORREF GetGridBkColor() const { return m_crGridBkColour; }
- // BOOL GetFixedColumnSelection() { return m_bFixedColumnSelection; }
- BOOL SetItemText(int nRow, int nCol, LPCTSTR str);
- BOOL SetItemState(int nRow, int nCol, UINT state);
- UINT GetItemState(int nRow, int nCol) const;
- BOOL SetItemBkColor(int nRow, int nCol, COLORREF cr = CLR_DEFAULT);
- COLORREF GetItemBkColor(int nRow, int nCol) const;
- BOOL SetItemFgColor(int nRow, int nCol, COLORREF cr = CLR_DEFAULT);
- COLORREF GetItemFgColor(int nRow, int nCol) const;
- // Operations
- public:
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CGridCtrl)
- public:
- virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
- //}}AFX_VIRTUAL
- // Implementation
- public:
- virtual ~CGridCtrl();
- CUIntArray m_arRowHeights, m_arColWidths;
- public:
- void EraseBkgnd(CDC* pDC);
- void OnDraw(CDC* pDC);
- BOOL RedrawCell(int nRow, int nCol, CDC* pDC = NULL);
- BOOL RedrawCell(const CCellID& cell, CDC* pDC = NULL);
- BOOL RedrawRow(int row);
- CGridCellBase* GetDefaultCell(BOOL bFixedRow, BOOL bFixedCol) const;
- // Generated message map functions
- protected:
- //{{AFX_MSG(CGridCtrl)
- afx_msg void OnPaint();
- afx_msg BOOL OnEraseBkgnd(CDC* pDC);
- afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
- afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
- afx_msg void OnMouseMove(UINT nFlags, CPoint point);
- afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
- afx_msg void OnTimer(UINT nIDEvent);
- afx_msg void OnDestroy();
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- protected:
- CRect m_FillRect;//高亮显示按钮位置
- CString m_shstr,m_szstr,m_bkstr,m_zxstr,m_qtstr,m_tjstr;
- // General attributes
- COLORREF m_crFixedTextColour, m_crFixedBkColour;
- COLORREF m_crGridBkColour, m_crGridLineColour;
- COLORREF m_crWindowText, m_crWindowColour, m_cr3DFace, // System colours
- m_crShadow;
- BOOL m_bDoubleBuffer;
- BOOL m_bSortOnClick;
- // Cell size details
- int m_nRows, m_nFixedRows, m_nCols, m_nFixedCols;//总行数/固定行数/总列数/固定列数
- int m_nVScrollMax, m_nHScrollMax;//滚动条最大值
- int m_nBarState;//滚动状态
- int m_nGridLines;//表格线
- BOOL m_bAllowColHide, m_bAllowRowHide;
- //Mouse operations such as cell selection
- CCellID m_LeftClickDownCell, m_SelectionStartCell,m_SelectedCell;
- CCellID m_idCurrentCell, m_idTopLeftCell;//当前单元格ID,左上角单元格ID
- // Fonts and images
- CRuntimeClass* m_pRtcDefault; // determines kind of Grid Cell created by default
- CGridDefaultCell m_cellDefault; // "default" cell. Contains default colours, font etc.
- CGridDefaultCell m_cellFixedColDef, m_cellFixedRowDef, m_cellFixedRowColDef;
- // Cell data
- CTypedPtrArray<CObArray, GRID_ROW*> m_RowData;
- // Mouse operations such as cell selection
- // int m_MouseMode;
- BOOL m_bLMouseButtonDown, m_bRMouseButtonDown;
- CPoint m_LeftClickDownPoint, m_LastMousePoint;
- int m_nTimerID;
- int m_nTimerInterval;
- int m_nResizeCaptureRange;
- BOOL m_bAllowRowResize, m_bAllowColumnResize;
- int m_nRowsPerWheelNotch;
- BOOL m_bColSizing;//改变列大小
- BOOL m_bAllowDraw;
- // BOOL m_bFixedRowSelection, m_bFixedColumnSelection;
- // sorting
- int m_bAscending;
- int m_nSortColumn;
- PFNLVCOMPARE m_pfnCompare;//排序函数的指针
- protected:
- void SetupDefaultCells();
- //关于滚动条:
- void ResetScrollBars();//重值滚动条
- void EnableScrollBars(int nBar, BOOL bEnable = TRUE);//允许有滚动条
- BOOL IsVisibleVScroll() { return ( (m_nBarState & GVL_VERT) > 0); } //??
- BOOL IsVisibleHScroll() { return ( (m_nBarState & GVL_HORZ) > 0); } //??
- int GetScrollPos32(int nBar, BOOL bGetTrackPos = FALSE);//得到滚动指针
- BOOL SetScrollPos32(int nBar, int nPos, BOOL bRedraw = TRUE);//设置滚动指针
- // CGridCellBase Creation and Cleanup
- virtual CGridCellBase* CreateCell(int nRow, int nCol);
- virtual void DestroyCell(int nRow, int nCol);
- BOOL SetCell(int nRow, int nCol, CGridCellBase* pCell);
- CCellID GetTopleftNonFixedCell(BOOL bForceRecalculation = FALSE);//得到左上角非固定单元格
- CCellRange GetVisibleNonFixedCellRange(LPRECT pRect = NULL, BOOL bForceRecalculation = FALSE);//可见部分单元格范围
- };
- // Returns the default cell implementation for the given grid region
- inline CGridCellBase* CGridCtrl::GetDefaultCell(BOOL bFixedRow, BOOL bFixedCol) const
- {
- //三个返回对象都是CGridDefaultCell的变量,只是初始化时对颜色设了不同值.
- //
- if (bFixedRow && bFixedCol) return (CGridCellBase*) &m_cellFixedRowColDef;
- if (bFixedRow) return (CGridCellBase*) &m_cellFixedRowDef;
- if (bFixedCol) return (CGridCellBase*) &m_cellFixedColDef;
- return (CGridCellBase*) &m_cellDefault;
- }
- inline CGridCellBase* CGridCtrl::GetCell(int nRow, int nCol) const
- {
- //这个函数返回Grid中一个Cell的指针:
- if (nRow < 0 || nRow >= m_nRows || nCol < 0 || nCol >= m_nCols)//如果传进来的行列号非法
- return NULL; //就返回空
- GRID_ROW* pRow = m_RowData[nRow];
- if (!pRow) return NULL;
- return pRow->GetAt(nCol);//传回数组中的一个元素
- }
- inline BOOL CGridCtrl::SetCell(int nRow, int nCol, CGridCellBase* pCell)
- {
- // if (GetVirtualMode())
- // return FALSE;
- if (nRow < 0 || nRow >= m_nRows || nCol < 0 || nCol >= m_nCols)
- return FALSE;
- GRID_ROW* pRow = m_RowData[nRow];
- if (!pRow) return FALSE;
- // pCell->SetCoords( nRow, nCol);
- pRow->SetAt(nCol, pCell);
- return TRUE;
- }
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
- #endif // !defined(AFX_GRIDCTRL_H__768A7058_3D28_11D8_B617_A69FB0BE0671__INCLUDED_)