HOWTO: Determine the Number of Visible Items in a List BoxID: Q78952
|
To determine the number of items that are currently visible in a list
box, an application must consider the following cases:
The following code segment can be used to determine the number of
items visible in a list box:
int ntop, nCount, nRectheight, nVisibleItems;
RECT rc, itemrect;
ntop = SendMessage(hwndList, LB_GETTOPINDEX, 0, 0);
// Top item index.
nCount = SendMessage(hwndList, LB_GETCOUNT, 0, 0);
// Number of total items.
GetClientRect(hwndList, &rc);
// Get list box rectangle.
nRectheight = rc.bottom - rc.top;
// Compute list box height.
nVisibleItems = 0; // Initialize counter.
while ((nRectheight > 0) && (ntop < nCount))
// Loop until the bottom of the list box
// or the last item has been reached.
{
SendMessage(hwndList, LB_GETITEMRECT, ntop, (DWORD)(&itemrect));
// Get current line's rectangle.
nRectheight = nRectheight - (itemrect.bottom - itemrect.top);
// Subtract current line height.
nVisibleItems++; // Increase item count.
ntop++; // Move to the next line.
}
Keywords : kbCtrl kbListBox kbGrpUser
Version :
Platform :
Issue type : kbhowto
Last Reviewed: March 7, 1999