今天在使用LISTBOX控件中遇到的一点小问题,主要是两个问题:水平滚动条不显示内容、垂直滚动条没有自动滚动。
在网上查了一下找到了解决办法,原来只需要向控件发送消息就行了。
具体代码如下(以下都是在Dialog类中的函数操作,如果是使用::SendDlgItemMessage函数,需要加入窗体的HWND):
ListBox控件中插入文字
::SendDlgItemMessage(hWnd, IDC_LIST, LB_ADDSTRING, 0, (LPARAM)str);
ListBox控件中设置水平滚动(Dialog中)
SIZE s; HDC hdc = ::GetDC(m_hWnd); GetTextExtentPoint32(hdc, str.c_str(), (int)str.length(), &s); static LONG max_length = 0; if(s.cx > max_length) { SendDlgItemMessage(IDC_LIST1, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0); max_length = s.cx; }
ListBox控件增加自动滚动
SendDlgItemMessage(IDC_LIST1, WM_VSCROLL, SB_PAGEDOWN, 0);