界面包含多組浮點數據 (作業編號、提交時間、運行時間),當前用多個 CEdit 控件逐個錄入,代碼冗長、擴展性差。
CListCtrl,屬性設置:View = Report、Full Row Select = True、Grid Lines = True;m_list.InsertColumn(0, _T("作業編號"), LVCFMT_LEFT, 80);
m_list.InsertColumn(1, _T("提交時間"), LVCFMT_LEFT, 100);
m_list.InsertColumn(2, _T("運行時間"), LVCFMT_LEFT, 100);
void CMFCApplication2Dlg::OnBnClickedButton1() {
int nItem = m_list.GetItemCount();
CString str;
str.Format(_T("%d"), GetDlgItemInt(IDC_EDIT6)); // 作業編號
m_list.InsertItem(nItem, str);
str.Format(_T("%.2f"), GetDlgItemFloat(IDC_EDIT7)); // 提交時間
m_list.SetItemText(nItem, 1, str);
str.Format(_T("%.2f"), GetDlgItemFloat(IDC_EDIT4)); // 運行時間
m_list.SetItemText(nItem, 2, str);
// 清空編輯框、設置焦點...
}
double GetDlgItemFloat(int nID) {
CString str; GetDlgItemText(nID, str);
return _tstof(str);
}
若需在列表中直接修改數值,可集成 CEdit 臨時控件:
參考:MFC ListCtrl 就地編輯、ListCtrl 嵌入編輯框。
GetItemText 即可;用 CListCtrl (Report View) 替代多個 CEdit 是 MFC 多行同類數據錄入的標準模式,代碼量減少 60% 以上,維護性大幅提升。