最近需要使用MFC显示列表信息,自然想到了常用的自带控件CListCtrl。由于界面上空间有限,而需要显示的列数较多,这就造成无法在一个页面显示所有列信息,于是搜索其他控件,找到了功能强大的列表控件CGridCtrl。 其他功能不多赘述,这里重点介绍如何实现在CGridCtrl单元格中显示多行字符串。 分为两个步骤:
第一步 在CGridDefaultCell::CGridDefaultCell() 里把默认的|DT_SINGLELINE注释掉。 m_nFormat = DT_LEFT|DT_VCENTER/*|DT_SINGLELINE*/|DT_NOPREFIX | DT_END_ELLIPSIS; //change by jg for multi line. 第二步 void CGridCtrl::OnEndEditCell(int nRow, int nCol, CString str)里添加一句RedrawWindow(); CString strCurrentText = GetItemText(nRow, nCol); if (strCurrentText != str) { SetItemText(nRow, nCol, str); if (ValidateEdit(nRow, nCol, str) && SendMessageToParent(nRow, nCol, GVN_ENDLABELEDIT) >= 0) { SetModified(TRUE, nRow, nCol); RedrawCell(nRow, nCol); RedrawWindow(); } else { SetItemText(nRow, nCol, strCurrentText); } } CGridCellBase* pCell = GetCell(nRow, nCol); if (pCell) pCell->OnEndEdit();完成以上两步后,CGridCtrl单元格中就可以使用"\r\n"实现换行功能了。