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:

  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 kbWinOS2000 kbGrpUser
Version : WINDOWS:; winnt:
Platform : WINDOWS winnt
Issue type : kbhowto


Last Reviewed: January 27, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.