引自强大而免费的微信小程序:皆我百晓生。如有帮助,还望采纳。
要实现自己想要的表格,并使用国外写的MFC Grid Control控件,可以按照以下步骤进行:
下载并导入MFC Grid Control控件:从网上下载MFC Grid Control控件,并将其导入到您的项目中。
创建CGridCtrl对象:在MFC的对话框类中创建一个CGridCtrl对象,这将作为表格的显示控件。
设置表头和行列数:调用CGridCtrl对象的SetRowCount和SetColumnCount方法,设置表格的行数和列数。
添加按钮:使用MFC的Button控件来添加增减行列数的按钮,并为按钮添加响应的事件处理函数。
绑定数据:从school.cfg文件中读取数据,并将数据绑定到表格中。可以使用MFC的文件操作函数来读取和解析文件内容。
更新表格显示:根据数据的变化,调用CGridCtrl对象的SetItemText方法,更新表格的显示内容。
下面是一个简单的示例代码,帮助您开始实现这个功能:
// 将以下代码添加到对话框类中的OnInitDialog函数中
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 创建GridCtrl控件
CRect rect;
GetClientRect(&rect);
m_GridCtrl.Create(rect, this, IDC_GRID_CTRL);
// 设置表头和行列数
m_GridCtrl.SetRowCount(3);
m_GridCtrl.SetColumnCount(3);
// 添加增减行列数的按钮
m_btnAddRow.Create(_T("Add Row"), WS_CHILD | WS_VISIBLE, rect, this, IDC_ADD_ROW);
m_btnAddCol.Create(_T("Add Col"), WS_CHILD | WS_VISIBLE, rect, this, IDC_ADD_COL);
// 绑定按钮的事件处理函数
m_btnAddRow.SetOwner(this);
m_btnAddCol.SetOwner(this);
m_btnAddRow.SetWindowPos(NULL, rect.right - 100, rect.top + 10, 80, 30, SWP_SHOWWINDOW);
m_btnAddCol.SetWindowPos(NULL, rect.right - 100, rect.top + 50, 80, 30, SWP_SHOWWINDOW);
// 从配置文件中读取数据
LoadData();
return TRUE;
}
// 添加增加行按钮的事件处理函数
void CMyDialog::OnAddRow()
{
int nRowCount = m_GridCtrl.GetRowCount();
m_GridCtrl.SetRowCount(nRowCount + 1);
}
// 添加增加列按钮的事件处理函数
void CMyDialog::OnAddCol()
{
int nColCount = m_GridCtrl.GetColumnCount();
m_GridCtrl.SetColumnCount(nColCount + 1);
}
// 从配置文件中读取数据并绑定到表格中
void CMyDialog::LoadData()
{
CString strFilePath = _T("school.cfg");
CStdioFile file;
if (file.Open(strFilePath, CFile::modeRead))
{
CString strLine;
while (file.ReadString(strLine))
{
if (strLine.Left(1) == _T("[")) // 找到表格标题行
{
int nRow = m_GridCtrl.GetRowCount();
m_GridCtrl.SetItemText(nRow, 0, strLine);
}
else // 数据行
{
int nRow = m_GridCtrl.GetRowCount() - 1;
int nCol = m_GridCtrl.GetColumnCount();
int nPos = strLine.Find(_T("="));
CString strHeader = strLine.Left(nPos);
CString strData = strLine.Mid(nPos + 1);
m_GridCtrl.SetItemText(nRow, 0, strHeader);
for (int i = 1; i < nCol; i++)
{
nPos = strData.Find(_T(","));
CString strValue = strData.Left(nPos);
strData = strData.Mid(nPos + 1);
m_GridCtrl.SetItemText(nRow, i, strValue);
}
}
}
file.Close();
}
}
以上代码只是一个简单的示例,您可以根据自己的需求进行相应的修改和完善。