ListBox设置水平滚动条

为ListBox关联控件变量m_ListBox

  1. for (int i=0; i<=20; ++i)
  2. {
  3.     m_List.AddString(L"123456789123456789123456789123456789123456789");
  4. }


当ListBox控件加入的字符串宽度过长时,新加入的有些字符串就不能显示,此时就需要加入水平滚动条

先将ListBox的Horizontal Scroll勾选上
在对话框CTestDlg类中加入SetHScroll成员函数

  1. void CTestDlg::SetHScroll()
  2. {
  3.     CDC* dc = GetDC();
  4.     SIZE s;
  5.     int index;
  6.     CString str;
  7.     long temp;
  8.     for(index= 0; index< m_List.GetCount(); index++)
  9.     {
  10.         m_List.GetText(index,str);
  11.         s = dc->GetTextExtent(str,str.GetLength()+1);   // 获取字符串的像素大小
  12.         // 如果新的字符串宽度大于先前的水平滚动条宽度,则重新设置滚动条宽度
  13.         // IDC_LISTBOX为m_List的资源ID
  14.         temp = (long)SendDlgItemMessage(IDC_LIST1, LB_GETHORIZONTALEXTENT, 0, 0); //temp得到滚动条的宽度
  15.         if (s.cx > temp)  
  16.         {
  17.             SendDlgItemMessage(IDC_LIST1, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0);
  18.         }
  19.     }
  20.     ReleaseDC(dc);
  21. }



之后只要在ListBox加入条目之后调用SetHScroll

你可能感兴趣的:(有关学习)