一个ListBox控件怎么显示横向的滚动条?
一个类型为CListBox的控件,属性中选了Horizaontal scroll和vscroll,当不断往里面AddString()的时候,竖向的滚动条就出来了。但是当AddString(str)中的str很长时,横向滚动条并没有出来,这样就无法完全显示str。该怎么办。我试了几种属性组合都不行。应该如何设置属性?或者就、还是要舔加代码? 问题点数:20、回复次数:5Top
1 楼rmryt(小R在线)回复于 2004-12-01 12:50:22 得分 0
有没有人告诉我啊?Top
2 楼handwolf(青松崖)回复于 2004-12-01 12:52:44 得分 5
m_lstBox1.ShowScrollBar(0,TRUE);
Top
3 楼happyparrot(快乐鹦鹉)回复于 2004-12-01 12:52:49 得分 15
我告诉你好了。
CListBox::SetHorizontalExtent
void SetHorizontalExtent( int cxExtent );
用这个函数设置横向的滚动长度。
Example
// The pointer to my list box.
extern CListBox* pmyListBox;
// Find the longest string in the list box.
CString str;
CSize sz;
int dx=0;
CDC* pDC = pmyListBox->GetDC();
for (int i=0;i < pmyListBox->GetCount();i++)
{
pmyListBox->GetText( i, str );
sz = pDC->GetTextExtent(str);
if (sz.cx > dx)
dx = sz.cx;
}
pmyListBox->ReleaseDC(pDC);
// Set the horizontal extent so every character of all strings
// can be scrolled to.
pmyListBox->SetHorizontalExtent(dx);
Top
4 楼handwolf(青松崖)回复于 2004-12-01 12:57:04 得分 0
楼上的正确!Top
5 楼rmryt(小R在线)回复于 2004-12-01 13:57:32 得分 0
哈哈,m_lstBox1.ShowScrollBar(0,TRUE);那个不行呢。开始是会出现一个scrollbar,但是鼠标一碰就消失了。happyparrot(快乐鹦鹉)真是强。连这个方法都想得到。不过每次AddString(),就应该用一次该方法。可是listbox控件的响应事件只有6种,找不到类似于textchanged这样的事件。所以我只有一开始SetHorizontalExtent(某个非常大的值)了。能不能自己添加事件呢?Top




