Microsoft KB Archive/78952

{|
 * width="100%"|

HOWTO: Determine the Number of Visible Items in a List Box

 * }

Q78952

-

The information in this article applies to:


 * Microsoft Windows Software Development Kit (SDK)
 * Microsoft Win32 Application Programming Interface (API)

-

SUMMARY
To determine the number of items that are currently visible in a list box, an application must consider the following cases:


 * 1) There are many items in the list box (some items are not visible).
 * 2) There are few items in the list box (the bottom area of the list box is empty).
 * 3) 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 kbOSWin2000 kbGrpDSUser

Issue type : kbhowto

Technology : kbAudDeveloper kbSDKSearch kbWin32sSearch kbWin32API kbWinSDKSearch