看起来应该很简单,但我无法让它发挥作用。我想要一个控件(我猜CListBox或CListCtrl)以一个很好的表格方式显示文本字符串。
添加项目时,应沿行添加它们,直到该行已满,然后开始新行。就像在wordprocessor中输入一样 - 当行已满时,项目开始被添加到下一行,控件可以垂直滚动。
尝试使用列表模式时,我得到的是CListCtrl是一个只有一个不断增长的行,带有一个水平滚动条。我看不出改变它的方法,必须有一个?
答案 0 :(得分:2)
你可能需要一个列表控件和LVS_REPORT。如果您希望用户使用键盘以交互方式添加项目,则可能需要数据网格,而不是列表。添加编辑到列表控件子项并不容易,从CWnd开始会更容易。搜索“MFC数据网格”以查找实现该功能的一些开源类库。
如果您可以为程序添加/ clr,则可以使用MFC的Windows窗体托管支持在Windows窗体中尝试数据网格类。您将在Windows窗体中找到比任何其他第三方MFC数据网格类库更多的数据网格类编程资源。
答案 1 :(得分:0)
如果您使用CRichEditCtrl,您可以将其设置为自动换行,请查看从以下内容中提取的代码段:
(I've derived my own QRichEditCtrl from the MFC CRichEditCtrl,
and here's the relevant code:)
void QRichEditCtrl::SetWordWrap(bool bWrap)
{
RECT r;
GetWindowRect(&r);
CDC * pDC = GetDC();
long lLineWidth = 9999999; // This is the non-wrap width
if (bWrap)
{
lLineWidth = ::MulDiv(pDC->GetDeviceCaps(PHYSICALWIDTH),
1440, pDC->GetDeviceCaps(LOGPIXELSX));
}
SetTargetDevice(*GetDC(), lLineWidth);
}