原文:点击打开链接
为列表控件CListBox添加水平滚动条
Win32的标准控件之中,列表控件(ListBox)并没有和列表视图(ListView)一样提供水平滚动条,所以如果列表项的长度超过列表的宽度,超出的部分将无法显示。可使用SDK来解决这一问题:
1)打开列表控件的属性框,将Stype中的Horizonal scroll钩选
2)在为ListBox添加文本的代码后调用下面的函数:
void CMyDlg::SetHScroll()
{
CDC* dc = GetDC();
SIZE s;
int i;
TCHAR str[100];
HDC hdc = dc->m_hDC; // 获得相关设备句柄
for(i = 0; i < m_listBox.GetCount(); i++)
{
m_listBox.GetText(i, str);
GetTextExtentPoint32(hdc, str, lstrlen(str), &s); // 获取字符串的像素大小
// 如果新的字符串宽度大于先前的水平滚动条宽度,则重新设置滚动条宽度
// IDC_LISTBOX为m_listBox的资源ID
if (s.cx > (LONG)SendDlgItemMessage(IDC_LISTBOX, LB_GETHORIZONTALEXTENT, 0, 0))
SendDlgItemMessage(IDC_LISTBOX, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0);
}
ReleaseDC(dc);
}