📄 gridctrl.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 + -