本周改一个需求,MFCGridCtrl中要求能修改单元格的内容,并且内容变动之后要程序要执行其他动作。
网上一番查询,找到了方法:
https://www.codeproject.com/Articles/8/MFC-Grid-control-2-27#EditValidate
我的代码如下两步:
1. 方法绑定事件
2. 方法定义
BEGIN_MESSAGE_MAP(TestCheckDlg, CDialog)
//{{AFX_MSG_MAP(TestCheckDlg)
//...
// Add a handler
ON_NOTIFY(GVN_ENDLABELEDIT, IDC_GRID1, FuncTest)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//必须要带NMHDR和LRESULT这两个参数,否则会报错
void TestCheckDlg::FuncTest(NMHDR *pNotifyStruct, LRESULT* pResult)
{
NM_GRIDVIEW* pItem = (NM_GRIDVIEW*) pNotifyStruct;
int row = (pItem->iRow)-1; // 点击的行号(实测要减1)
int col = (pItem->iColumn)-1; // 点击的列号(实测要减1)
//根据行号列号获取单元格内容
CString newName = m_ctrl1.GetCellString(col, row);
//...
}
问题解决。