CGridCtrl m_gridctrl用法总结

来源:互联网 发布:淘宝网棉被单人多少钱 编辑:程序博客网 时间:2024/06/05 11:51

CGridCtrl 是一个文件夹,里面包含所用要到的表格控件的各种操作(各种类)

1、File View:工程右键-->New Folder:CGridCtrl->右键-->Add Files to folder-->将CGridCtrl内文件全部导入。此时在Class View窗口内可以看到新导入控件操作的相关类。


                         

2、在自己的对话框类中将头文件包含进来,定义CGridCtrl类对象,及成员函数

#include "GridCtrl/GridCtrl.h"

1
2
3
4
5
private:
    CGridCtrl *m_gridctrl;
    void InitGridCtrl();
    void SetGridRange();
    void DisplayData();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void CMyRFDlg::SetGridRange()
{
    int i=0,j=0;
    m_gridctrl->DeleteAllItems();
    m_gridctrl->SetFixedColumnCount();
    m_gridctrl->SetFixedRowCount();
    m_gridctrl->SetRowCount(m_ReadFile.getLabel().size()+1);//行数
    m_gridctrl->SetColumnCount(m_ReadFile.getFeature().size()+1);//列数
    for (i=0;i<m_gridctrl->GetRowCount();i++)//设置每个格内的格式
    {
        for (j=0;j<m_gridctrl->GetColumnCount();j++)
        {
            m_gridctrl->SetItemFormat(i,j,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX);
        }
    }
    for (i=0;i<m_gridctrl->GetRowCount();i++)//第0列的颜色
    {
        m_gridctrl->SetItemBkColour(i,0,RGB(135,206,235));
    }
    for (i=0;i<m_gridctrl->GetColumnCount();i++)//第0行的颜色
    {
        m_gridctrl->SetItemBkColour(0,i,RGB(135,206,235));
    }
   
    for (i=0;i<m_gridctrl->GetRowCount();i++)
    {
        m_gridctrl->SetRowHeight(i,25);//设置固定行宽
    }
    m_gridctrl->SetColumnWidth(0,50);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void CMyRFDlg::DisplayData()
{
    vector< vector<double> >OriginData=m_ReadFile.getOriginData();
    vector< string >Feature=m_ReadFile.getFeature();
    vector< string >label=m_ReadFile.getLabel();
    int i=0,j=0;
    GV_ITEM gridcell;
    gridcell.mask=GVIF_TEXT;
    gridcell.row=0;
    CString celltext;
    for (i=0;i<m_gridctrl->GetColumnCount();i++)
    {
        gridcell.col=i+1;
        celltext=Feature[i].c_str();
        gridcell.strText=celltext;
        m_gridctrl->SetItem(&gridcell);
    }
    gridcell.col=0;
    for (i=0;i<m_gridctrl->GetRowCount();i++)
    {
        gridcell.row=i+1;
        celltext=label[i].c_str();
        gridcell.strText=celltext;
        m_gridctrl->SetItem(&gridcell);  
    }
    for(i=1;i<m_gridctrl->GetRowCount();i++)
    {
        gridcell.row=i;
        for(j=1;j<m_gridctrl->GetColumnCount();j++)
        {
            gridcell.col=j;
            celltext.Format("%f",OriginData[i-1][j-1]);
            gridcell.strText=celltext;
            m_gridctrl->SetItem(&gridcell);
        }
    }
    m_gridctrl->ShowWindow(SW_SHOW);
}

需要在InitialDialog中做的初始化操作有:

1
2
m_gridctrl=NULL;
InitGridCtrl();

完了了上述步骤,接下来调用即可

1
2
SetGridRange();
DisplayData();

运行如下图: