-// Windows-specific code to set the horizontal extent of
-// the listbox, if necessary. If s is non-NULL, it's
-// used to calculate the horizontal extent.
-// Otherwise, all strings are used.
-void wxListBox::SetHorizontalExtent(const wxString& s)
-{
- // Only necessary if we want a horizontal scrollbar
- if (!(m_windowStyle & wxHSCROLL))
- return;
- TEXTMETRIC lpTextMetric;
-
- if (s != "")
- {
- int existingExtent = (int)SendMessage(hwnd, LB_GETHORIZONTALEXTENT, 0, 0L);
- HDC dc = GetWindowDC(hwnd);
- HFONT oldFont = 0;
- if (GetFont().Ok() && GetFont().GetResourceHandle())
- oldFont = (HFONT) ::SelectObject(dc, (HFONT) GetFont().GetResourceHandle());
-
- GetTextMetrics(dc, &lpTextMetric);
- SIZE extentXY;
- ::GetTextExtentPoint(dc, (LPSTR) (const char *)s, s.Length(), &extentXY);
- int extentX = (int)(extentXY.cx + lpTextMetric.tmAveCharWidth);
-
- if (oldFont)
- ::SelectObject(dc, oldFont);
-
- ReleaseDC(hwnd, dc);
- if (extentX > existingExtent)
- SendMessage(hwnd, LB_SETHORIZONTALEXTENT, LOWORD(extentX), 0L);
- return;
- }
- else
- {
- int largestExtent = 0;
- HDC dc = GetWindowDC(hwnd);
- HFONT oldFont = 0;
- if (GetFont().Ok() && GetFont().GetResourceHandle())
- oldFont = (HFONT) ::SelectObject(dc, (HFONT) GetFont().GetResourceHandle());
-
- GetTextMetrics(dc, &lpTextMetric);
- int i;
- for (i = 0; i < m_noItems; i++)