⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gridctrl.h

📁 一个更为先进的嵌入式操作系统.采用RMS线程调度算法,具有信号量等同步对象.亦包括GUI. 通过该系统您可以极大知道Windows的内部秘密.
💻 H
字号:
#ifndef _GOS_GRIDCTRL_H_
#define _GOS_GRIDCTRL_H_

enum _tagGridCtrl
{
	gcmGetDSRow=WM_CTLBASE+1,
	gcmGetDSCellData,
	gcmGetRowState,
	gcmAddRowState,
	gcmRemoveRowState,
	gcmActiveCell,
	gcmDeactiveCell,
	gcmDrawCell,
	gcmDrawHeader,

	GCS_TEXT			=0x0000,
	GCS_INT				=0x0001,
	GCS_UINT			=0x0002,
	GCS_CHAR			=0x0003,
	GCS_BYTE			=0x0004,
	GCS_SHORT			=0x0005,
	GCS_USHORT			=0x0006,
	GCS_BOOL			=0x0007,
	GCS_FLOAT			=0x0008,
	GCS_DOUBLE			=0x0009,
	GCS_DATE			=0x000a,
	GCS_TIME			=0x000b,
	GCS_DATETIME		=0x000c,
	GCS_VARIENT			=0x000d,
	GCS_BITMAP			=0x000e,
	GCS_OWNERDRAW		=0x000f,
	
	GCS_ZOOMIN			=0x0100,
	GCS_ZOOMOUT			=0x0200,
	GCS_ZOOM			=0x0300,
	GCS_STRETCH			=0x0400,
	GCS_MULTILINE		=0x0100,
	GCS_WORDBREAK		=0x0300,
	GCS_UNDERLINE		=0x0400,
	GCS_ICONLIKE		=0x0800,
	GCS_STRLENEX		=0x0800,
	GCS_LEFT			=0x1000,
	GCS_RIGHT			=0x2000,
	GCS_CENTER			=0x3000,
	GCS_TOP				=0x4000,
	GCS_BOTTOM			=0x8000,
	GCS_VCENTER			=0xC000,
	GCS_DTMASK			=0xf700,

	GCS_SELECTED		=0x0010L,
	GCS_FOCUSED			=0x0020L,
	
	GCS_ROWSELECTED		=0x00010000L,
	GCS_ROWFOCUSED		=0x00020000L,
	GCS_ROWPUSHED		=0x00020000L,

	GCS_ICON			=GCS_BITMAP|GCS_ICONLIKE,
	GCS_TYPEMASK		=0x000f,
	GCS_STYLEMASK		=0x0ff0,
	GCS_STATEMASK		=0xf000|GCS_FOCUSED,
	GCS_COLMASK			=0xffff,
	GCS_ROWMASK			=0xffff0000L,

	GCS_CLICKED=1,
};

typedef struct _tagGCDRAWCELLARG
{
	int nRow;
	int nCol;
	PVOID pData;
	DWORD nStyle;
	CRect rect;
}GCDRAWCELLARG,*PGCDRAWCELLARG;


class CGridCtrl : public CWnd
{
protected:
	struct CColumn
	{
		PVOID pData;
		DWORD nStyle;
		int nWidth;
	};
public:
	CGridCtrl(void);
	~CGridCtrl(void);
	LRESULT MsgProc(UINT message, WPARAM wParam, LPARAM lParam);
//data source
	POSITION GetDSRow(POSITION pos,int nOffset)
		{ return (POSITION)MsgProc(gcmGetDSRow,WPARAM(pos),nOffset); }
	POSITION GetDSCellData(POSITION pos,int nCol)
		{ return (POSITION)MsgProc(gcmGetDSCellData,WPARAM(pos),nCol); }
//scroll
	BOOL ScrollRow(int nRows);
//draw
	void OnPaint(CDC* pDC);
public:
//operators
	void InsertColumn(int nCol,LPCTSTR pszText,DWORD nStyle,int nWidth);
	void DeleteColumn(int nCol);
	void RedrawRow(int nRow);
	DWORD AddRowState(int nRow,DWORD nState);
	DWORD RemoveRowState(int nRow,DWORD nState);
	BOOL ActiveCell(int nRow,int nCol);
	BOOL DeactiveCell(int nRow,int nCol);
	BOOL Create(DWORD nStyle,LPCRECT pRect,CPWnd* pParent);
	DWORD GetRowState(int nRow);
//helper
	void GetRowRect(int nRow,LPRECT pRect);
	void GetHeaderRect(LPRECT pRect);
	void RefreshGridData();
	int HitTest(CPoint pt);
//event
	void OnMove();
	void OnDestroy();
	void OnDrawHeader(CDC* pDC,PGCDRAWCELLARG pArg);
	void OnDrawCell(CDC* pDC,PGCDRAWCELLARG pArg);
	void DrawText(CDC* pDC,PGCDRAWCELLARG pArg);
	void DrawBitmap(CDC* pDC,PGCDRAWCELLARG pArg);
protected:
	int m_nHeaderHeight;
	int m_nRowHeight;
	int m_nCurGridRow;
	int m_nCurGridCol;
	CArray<POSITION> m_aGridRow;
	CArray<CColumn> m_aGridCol;
};

#endif //_GOS_GRIDCTRL_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -