如何在VC中的listbox添加水平滚动条?

chentaodark 2008-03-07 08:00:20
如何在VC中的listbox添加水平滚动条?
...全文
905 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xianrenqiu_tree 2011-11-16
  • 打赏
  • 举报
回复
楼主!6楼的代码是正解!!!
我在MFC设计中也遇到过你的问题,尝试了他的代码,直接在你调用listbox进行显示的功能函数里(一般是一个按键的函数里,点此按键可让你指定的listbox里显示)添加此代码。
// The pointer to my list box.
extern CListBox* pmyListBox;
是定义你所使用的listbox的类指针,你可以在工程类的头文件里加上这句话,功能函数里就不用加这句话了,其他代码可以直接copy下来,别忘把你定义的listbox替换这里的pmyListBox!
(比如我的代码中
void CLUDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX,IDC_LIST1,listbox1);

}定义的是listbox1,所以将listbox1替换这里的pmyListBox,就OK啦!!!)
woolne 2011-02-22
  • 打赏
  • 举报
回复
8楼英明!
laiyunlin 2009-12-07
  • 打赏
  • 举报
回复
说直接设置就可以的别误人子弟了·····
至少在VC++ 6.0 里面直接设置是一定不会出现的。
feixiangdeyu12 2009-09-15
  • 打赏
  • 举报
回复
我也一样
chenawei 2008-11-18
  • 打赏
  • 举报
回复
我选中了属性框中的Horizontal Scroll,但水平滚动条死活就是不出现!!
gldxp 2008-05-24
  • 打赏
  • 举报
回复
8楼正解。
Gavin001 2008-03-11
  • 打赏
  • 举报
回复
学习了
appleboyecho 2008-03-10
  • 打赏
  • 举报
回复
那不是窗口风格?Listbox的怎么设置呢?
============================
Listbox也是一种窗口,当然可以设置了,设置的方法楼上的几位说的都可以。方法应该比较全了
九桔猫 2008-03-10
  • 打赏
  • 举报
回复
SendMessage(hwndHScroll,LB_SETHORIZONTALEXTENT,200,0);

类似这样的语句,发送个消息过去。
scq2099yt 2008-03-09
  • 打赏
  • 举报
回复
属性设置
luhongyu2108 2008-03-08
  • 打赏
  • 举报
回复
ListBox的属性中添加WS_HSCROLL,因为CListBox是从CWnd继承的,
所以可以设置这个属性。
然后使用SetHorizontalExtent设置水平滚动范围
下面的代码根据列表框中内容设置范围
// The pointer to my list box.
extern CListBox* pmyListBox;

// Find the longest string in the list box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC* pDC = pmyListBox->GetDC();
CFont* pFont = pmyListBox->GetFont();

// Select the listbox font, save the old font
CFont* pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);

for (int i = 0; i < pmyListBox->GetCount(); i++)
{
pmyListBox->GetText(i, str);
sz = pDC->GetTextExtent(str);

// Add the avg width to prevent clipping
sz.cx += tm.tmAveCharWidth;

if (sz.cx > dx)
dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
pmyListBox->ReleaseDC(pDC);

// Set the horizontal extent so every character of all strings
// can be scrolled to.
pmyListBox->SetHorizontalExtent(dx);
薛勇 2008-03-08
  • 打赏
  • 举报
回复
选中属性框中的Horizontal Scroll就可以了。
Eleven 2008-03-07
  • 打赏
  • 举报
回复
顶一下楼上的!
cnzdgs 2008-03-07
  • 打赏
  • 举报
回复
因为很多控件都具有这种风格,所以这样定义。
你可以在编辑资源的时候在ListBox的属性中加入Horizontal Scroll风格,也可以在程序中创建ListBox的时候指定具有这个风格,还可以创建好之后用ModifyStyle更改加入这个风格。
chentaodark 2008-03-07
  • 打赏
  • 举报
回复
那不是窗口风格?Listbox的怎么设置呢?
cnzdgs 2008-03-07
  • 打赏
  • 举报
回复
添加WS_HSCROLL风格。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧