【发布时间】:2012-03-19 02:01:30
【问题描述】:
我有一个所有者绘制的列表框,我向其中添加了很多项目(这需要时间), 添加项目时,垂直滚动条不断变小, 我想在开始添加时禁用滚动条,然后重新启用它..
我试过了--
LONG old_style=GetWindowLong(hPlayList,GWL_STYLE);
LONG new_style= old_style&~WS_VSCROLL;
SetWindowLong(hPlayList,GWL_STYLE,new_style);
SetWindowPos(hPlayList,HWND_TOP,lstRc.left,lstRc.right,lstRc.right-lstRc.top,lstRc.bottom-lstRc.top,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
UpdateWindow(hPlayList);
和
ShowScrollBar(hPlayList,SB_VERT,FALSE);
但是当我添加项目时滚动条仍然显示, 列表框的创建方式类似于,
hPlayList = CreateWindowEx(WS_EX_CLIENTEDGE, WC_LISTBOX, NULL,
LBS_OWNERDRAWFIXED |WS_VSCROLL | WS_HSCROLL |WS_CHILD | WS_TABSTOP | WS_VISIBLE|LBS_NOTIFY|LBS_HASSTRINGS,
lbsPos.x, lbsPos.y,350, 400, hWnd, (HMENU) LIST_ID, GetModuleHandle(NULL), NULL);
我使用 SendMessage() 添加项目。
我也试过了,
ShowWindow(hPlayList,SW_HIDE);
和
SendMessage(hPlayList,WM_SETREDRAW,(WPARAM)FALSE,0);
【问题讨论】:
-
这是我为这个问题上传的视频..youtu.be/d6KyUC9SWiA
-
和整个代码...pastebin ...有些代码是多余的和注释的。