2009-12-08 75 views
0

這應該是簡單的,似乎,但我不能完全得到它的工作。我想要一個控件(我猜是CListBox或CListCtrl),它以很好的製表方式顯示文本字符串。MFC:顯示的文本項的表格顯示

由於添加的項目,應沿行添加到該行是滿的,然後開始一個新行。就像你的文字處理打字 - 當行則全,項目開始被添加到下一行,以及控制可垂直滾動。

與列表模式CListCtrl的努力時,我得到的是一排剛剛持續增長,具有水平滾動條。我看不出有什麼辦法可以改變這種狀況,肯定有一種?

回答

2

你可能需要一個列表控件問心無愧LVS_REPORT。如果您希望用戶使用鍵盤以交互方式添加項目,則可能需要數據網格,而不是列表。將編輯添加到列表控件子項目並不容易,並且從CWnd開始更容易。搜索「MFC數據網格」以查找實現該功能的一些開源類庫。

如果你能負擔得起添加/ CLR到您的程序,你可以使用MFC的Windows窗體託管支持嘗試在Windows窗體數據網格類。在Windows窗體中的數據網格類上,您會發現比任何其他第三方MFC數據網格類庫更多的編程資源。

0

如果你使用的CRichEditCtrl你可以將其設置爲自動換行,看看這個片段摘自:

http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.ui/2004-03/0111.html

(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); 
}