這應該是簡單的,似乎,但我不能完全得到它的工作。我想要一個控件(我猜是CListBox或CListCtrl),它以很好的製表方式顯示文本字符串。MFC:顯示的文本項的表格顯示
由於添加的項目,應沿行添加到該行是滿的,然後開始一個新行。就像你的文字處理打字 - 當行則全,項目開始被添加到下一行,以及控制可垂直滾動。
與列表模式CListCtrl的努力時,我得到的是一排剛剛持續增長,具有水平滾動條。我看不出有什麼辦法可以改變這種狀況,肯定有一種?
這應該是簡單的,似乎,但我不能完全得到它的工作。我想要一個控件(我猜是CListBox或CListCtrl),它以很好的製表方式顯示文本字符串。MFC:顯示的文本項的表格顯示
由於添加的項目,應沿行添加到該行是滿的,然後開始一個新行。就像你的文字處理打字 - 當行則全,項目開始被添加到下一行,以及控制可垂直滾動。
與列表模式CListCtrl的努力時,我得到的是一排剛剛持續增長,具有水平滾動條。我看不出有什麼辦法可以改變這種狀況,肯定有一種?
你可能需要一個列表控件問心無愧LVS_REPORT。如果您希望用戶使用鍵盤以交互方式添加項目,則可能需要數據網格,而不是列表。將編輯添加到列表控件子項目並不容易,並且從CWnd開始更容易。搜索「MFC數據網格」以查找實現該功能的一些開源類庫。
如果你能負擔得起添加/ CLR到您的程序,你可以使用MFC的Windows窗體託管支持嘗試在Windows窗體數據網格類。在Windows窗體中的數據網格類上,您會發現比任何其他第三方MFC數據網格類庫更多的編程資源。
如果你使用的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);
}