初始化Grid实例:

BOOL CMainFrame::OnInitDialog()

{

    CDialogEx::OnInitDialog();

    m_vecFiles.clear();

    InitData();

    LPCTSTR strArray[] = { _T("选择"), _T("Combox"), _T("文件名称") };

    int nCount = _countof(strArray) + 1;

    int nRows = m_vecFiles.size() + 1;

    m_Grid.FormatReport();

    m_Grid.SetFixedRowCellPosition(cellPositionCenter);

    m_Grid.SetRowCellPosition(cellPositionLeft);

    m_Grid.SetBkColor(RGB(0xFF, 0xFF, 0xFF));

    m_Grid.SetTrackFocusCell(TRUE);

    m_Grid.SetHeaderSort(FALSE);

    m_Grid.SetFixedColumnCount(1);

    m_Grid.SetFixedRowCount(1);

    m_Grid.SetColumnCount(nCount);

    m_Grid.SetRowCount(nRows);

    

    for (int i = 0; i < _countof(strArray); i++)

    {

        m_Grid.SetItemText(0, i+1, strArray[i]);

        m_Grid.SetColumnWidth(1, 50);

        m_Grid.SetColumnWidth(2, 100);

    }

    m_Grid.ExpandLastColumn();

    m_Grid.SetEditable(TRUE);

    

    FillGridNoFresh();

    return TRUE;

}

void CMainFrame::InitData()

{

    for (int i = 0; i < 100; i++)

    {

        CString str;

        str.Format(L"测试:%d", i);

        LPFileData data;

        data.strFileName = str;

        m_vecFiles.push_back(data);

    }

}

void CMainFrame::FillGridNoFresh()

{

    CString strIndex;

    for (int i = 0; i < m_vecFiles.size(); i++)

    {

        int nTempRow = m_Grid.GetRowCount();

        strIndex.Empty();

        strIndex.Format(L"测试:%d", i + 1);

        m_Grid.SetItemText(i + 1, 3, strIndex.AllocSysString());

        m_Grid.SetCellType(i + 1, 1, celltypeCheckBox);

        m_Grid.SetCellType(i + 1, 2, celltypeCombo);

        CStringArray options;

        options.Add(_T("Option 1"));

        options.Add(_T("Option 2"));

        options.Add(_T("Option 3"));

        CGridCellCombo *pCell = (CGridCellCombo*)m_Grid.GetCell(i+1, 2);

        pCell->SetOptions(options);

        pCell->SetStyle(CBS_DROPDOWN);

        pCell->SetCurSel(1);

    }

    m_Grid.Refresh();

}