Отключить полосу прокрутки на нарисованном владельцем списке - PullRequest
4 голосов
/ 18 марта 2012

У меня есть нарисованный владельцем список, в который я добавляю много предметов (и это занимает время), когда элементы добавляются, вертикальная полоса прокрутки продолжает уменьшаться, Я хочу отключить полосу прокрутки, когда начну добавлять, а затем снова включить ее.

Я пытался -

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);

1 Ответ

3 голосов
/ 18 марта 2012

Вы можете использовать сообщение WM_SETREDRAW с wParam (fRedraw), установленным на FALSE, перед добавлением строк. когда вы закончите, установите TRUE и UpdateWindow или RedrawWindow.

Это сообщение может быть полезно, если приложение должно добавить несколько элементов в список . Приложение может вызвать это сообщение с wParam, установленным в FALSE, добавить элементы, а затем снова вызвать сообщение с wParam, установленным в TRUE. Наконец, приложение может вызвать RedrawWindow (hWnd, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN), чтобы вызвать перерисовку списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...