初始化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();
}