亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gridctrl.h

?? 一種簡單的股票軟件源代碼,編譯后可以實時顯示證券行情
?? H
字號:
#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_)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩你懂的电影在线观看| 日本韩国欧美三级| 亚洲aaa精品| 国产麻豆精品久久一二三| 在线影视一区二区三区| 精品日韩欧美在线| 日韩国产在线观看| 99久久免费精品| 欧美一级片在线| 91精品啪在线观看国产60岁| 欧美va日韩va| 中文字幕在线播放不卡一区| 亚洲伊人伊色伊影伊综合网| 亚洲高清不卡在线观看| 日本三级韩国三级欧美三级| 成人晚上爱看视频| 国产精品一区二区果冻传媒| 国产亚洲女人久久久久毛片| 中文字幕av一区二区三区免费看| 亚洲视频中文字幕| 亚洲与欧洲av电影| 日韩在线观看一区二区| 成人动漫视频在线| 狠狠久久亚洲欧美| 亚洲一区二区三区不卡国产欧美| 久99久精品视频免费观看| 成人av资源下载| 欧美在线制服丝袜| 久久综合狠狠综合| 天天操天天干天天综合网| 99久久免费视频.com| 久久先锋资源网| 午夜精品123| 91在线视频网址| 国产日本一区二区| 香蕉成人啪国产精品视频综合网| 国内欧美视频一区二区| 欧美日韩精品一区二区天天拍小说| 久久蜜桃一区二区| 一区二区在线免费观看| 国产精品66部| 久久综合一区二区| 美腿丝袜在线亚洲一区| 欧美日韩国产影片| 一区二区在线观看视频| 99国产精品久久久久久久久久| 精品盗摄一区二区三区| 久久精品国产亚洲一区二区三区| 91福利国产精品| 亚洲成人综合视频| 国产乱人伦偷精品视频不卡| 91麻豆精东视频| 欧美成人a在线| 中文字幕av一区二区三区高| 亚洲国产欧美在线人成| 成人免费毛片片v| 成人激情免费电影网址| 国产真实乱对白精彩久久| 韩国一区二区三区| 成人综合婷婷国产精品久久| 成av人片一区二区| 欧美在线999| 欧美无砖专区一中文字| 麻豆精品视频在线观看免费| 91精品黄色片免费大全| 亚洲欧美日韩国产一区二区三区| 国产一区二区三区四| 欧美一区二区三区影视| 精品一区二区三区在线视频| 久久久久久久综合| 国产高清精品久久久久| 国产午夜精品理论片a级大结局 | 自拍偷拍亚洲欧美日韩| 国产精一品亚洲二区在线视频| 精品国产一区二区三区av性色| 国产成人8x视频一区二区| 亚洲国产成人午夜在线一区| 欧美三区在线观看| 精品亚洲porn| 一区二区三区欧美视频| 精品国产乱码久久| 欧美丝袜自拍制服另类| 免费观看成人av| 日本不卡一二三| 国产精品美女视频| 中文久久乱码一区二区| 欧美一级黄色录像| 91精品国产综合久久香蕉麻豆| 91在线观看一区二区| 成人激情电影免费在线观看| 欧美日韩激情一区二区三区| 精品久久人人做人人爽| 精品国产乱码久久久久久老虎| 91丨九色porny丨蝌蚪| 国产一区二区三区精品视频| 偷偷要91色婷婷| 亚洲女同一区二区| 亚洲一区二区三区美女| 国产精品 欧美精品| 成人午夜视频在线观看| 免费观看在线色综合| 国产在线一区观看| 亚洲男同1069视频| 国产精品福利影院| 亚洲日本青草视频在线怡红院| 裸体一区二区三区| 欧美视频自拍偷拍| 精品福利一二区| 亚洲一区二区三区影院| 日韩国产欧美在线播放| 精品一区二区三区的国产在线播放| av中文字幕一区| 亚洲精品在线三区| 亚洲影院理伦片| 高清视频一区二区| 91精品国产一区二区三区蜜臀| 亚洲少妇屁股交4| 欧美制服丝袜第一页| 欧美一区二区三区影视| 一区二区三区 在线观看视频| 福利一区福利二区| 久久―日本道色综合久久| 亚洲国产日韩在线一区模特| 成人性生交大片免费看中文 | 92精品国产成人观看免费| 1024成人网| 欧美色区777第一页| 日韩亚洲欧美综合| 蜜桃传媒麻豆第一区在线观看| 欧美久久一二区| 天天射综合影视| 欧美一区二区网站| 久久精品久久综合| 精品国产伦理网| 懂色av中文一区二区三区| 国产精品三级电影| 97精品视频在线观看自产线路二| 中文字幕中文在线不卡住| av在线播放不卡| 一区二区在线观看免费| 717成人午夜免费福利电影| 蜜桃视频免费观看一区| 久久久精品日韩欧美| 成人国产精品免费观看视频| 亚洲另类在线一区| 欧美一卡2卡3卡4卡| 国产精品中文字幕欧美| 亚洲精品欧美综合四区| 欧美乱妇20p| 国产成人在线视频免费播放| 中文字幕不卡的av| 欧美日韩精品福利| 国产福利91精品| 亚洲在线中文字幕| 国产三级精品视频| 欧美自拍偷拍一区| 国内精品久久久久影院色| 亚洲同性同志一二三专区| 6080日韩午夜伦伦午夜伦| 成人免费毛片高清视频| 99精品欧美一区二区三区小说 | 欧美一区二区三区的| 国产精品系列在线播放| 亚洲一区二区三区四区在线观看 | 色综合天天性综合| 激情成人综合网| 亚洲不卡在线观看| 国产精品国产自产拍高清av王其| 日韩一区二区在线看| 欧美中文字幕一区二区三区亚洲| 国产精品资源网站| 久久精品99国产精品| 亚洲一区二区三区在线看| 欧美国产在线观看| 91麻豆精品国产91久久久久久久久 | 国产福利一区二区三区视频在线| 蜜桃视频在线观看一区二区| 亚洲午夜av在线| 亚洲图片你懂的| 亚洲欧美在线观看| 国产精品网站导航| 国产日韩欧美一区二区三区乱码| 精品捆绑美女sm三区| 欧美一卡二卡在线| 精品少妇一区二区三区在线播放 | 91在线观看成人| www.日韩在线| 91丝袜美腿高跟国产极品老师| 99麻豆久久久国产精品免费| 高清beeg欧美| 99视频精品免费视频| 91在线高清观看| 欧美在线观看你懂的| 欧美色综合网站| 欧美剧情片在线观看| 日韩一级黄色大片| 久久久久久久久久久久久女国产乱| 久久久久国色av免费看影院| 久久久精品免费免费| 亚洲人成网站精品片在线观看|