HOWTO: Determine the Number of Visible Items in a List Box
ID: Q78952
|
The information in this article applies to:
-
Microsoft Windows Software Development Kit (SDK)
-
Microsoft Win32 Application Programming Interface (API)
-
Microsoft Windows 2000
SUMMARY
To determine the number of items that are currently visible in a list
box, an application must consider the following cases:
- There are many items in the list box (some items are not visible).
- There are few items in the list box (the bottom area of the list
box is empty).
- The heights of the items may vary (an owner-draw list box or use of
a font other than the system default).
MORE INFORMATION
The following code segment can be used to determine the number of
items visible in a list box:
Sample Code
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.
}
Additional query words:
Keywords : kbCtrl kbListBox kbWinOS2000 kbGrpUser
Version : WINDOWS:; winnt:
Platform : WINDOWS winnt
Issue type : kbhowto