【发布时间】:2013-02-18 09:00:20
【问题描述】:
我是应用程序开发的新手。 我创建了一个应用程序,该应用程序预计会以表格格式在 RichEditControl2 中显示以下数据,但我遇到了字符间距问题。
日期 MilsStone Sub 2012-03-12 需求/票证分析需求理解2.0 2012-03-14 设计开发/文档设计3.0 2012-03-15 Design Design Review 3.0 2012-03-15 编码和单元测试开发4.0
在这种情况下,我无法设置宽度(使用 AddDataToDisplayBox 中的 Format())。请帮忙。
void Csdlc_verifierDlg::AddDataToDisplayBox(int index,COLORREF color, bool bold, bool italic, bool underline)
{
CString strTemp;
char buf[255]={0};
record_data record = mRecData.GetAt(index);
strTemp.Format("%-15s%-50s%-50s%-5s%-15s",record.date,record.milestone,record.tasktype,record.effort,record.name);
AddLine(strTemp,NEWLINE,color,bold,italic,underline);
}
int Csdlc_verifierDlg::AddLine(CString str, int seperator, COLORREF color, bool bold, bool italic, bool underline)
{
int txtLen = mRichEditCtrl.GetTextLength();
// Save number of lines before insertion of new text
int nOldLines = mRichEditCtrl.GetLineCount();
// Initialize character format structure
CHARFORMAT cf = {0};
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_CHARSET|CFM_SPACING; //Mask validates the active field in this case.
cf.dwEffects = (bold ? CFE_BOLD : 0) | (italic ? CFE_ITALIC : 0) | (underline ? CFE_UNDERLINE : 0);
cf.crTextColor = color;
//Add newline character, if required.
switch(seperator)
{
case NEWLINE:
str.AppendChar('\n');
break;
case SPACE:
str.AppendChar(' ');
break;
}
//Insert data at the end.
mRichEditCtrl.SetSel(txtLen, -1); // Set the cursor to the end of the text area and deselect everything.
mRichEditCtrl.ReplaceSel(str); // Inserts when nothing is selected.
// Apply formating to the just inserted text.
mRichEditCtrl.SetSel(txtLen-(nOldLines-1), mRichEditCtrl.GetTextLength());
mRichEditCtrl.SetSelectionCharFormat(cf);
// Scroll by the number of lines just inserted
mRichEditCtrl.LineScroll(mRichEditCtrl.GetLineCount() - nOldLines);
return 0;
}
【问题讨论】:
标签: visual-c++ mfc