X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b39dbf34b887a73c525da903d8599f4f6b7eb8f9..669b65b94575865adc226d35a0de0dd81dde1e5f:/src/msw/listbox.cpp diff --git a/src/msw/listbox.cpp b/src/msw/listbox.cpp index 4d31896890..b587d32dba 100644 --- a/src/msw/listbox.cpp +++ b/src/msw/listbox.cpp @@ -9,7 +9,7 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "listbox.h" #endif @@ -49,6 +49,13 @@ IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl) +/* +TODO PROPERTIES + selection + content + item +*/ + // ============================================================================ // list box item declaration and implementation // ============================================================================ @@ -145,7 +152,7 @@ bool wxListBox::Create(wxWindow *parent, if (m_windowStyle & wxLB_SORT) wstyle |= LBS_SORT; -#if wxUSE_OWNER_DRAWN +#if wxUSE_OWNER_DRAWN && !defined(__WXWINCE__) if ( m_windowStyle & wxLB_OWNERDRAW ) { // we don't support LBS_OWNERDRAWVARIABLE yet wstyle |= LBS_OWNERDRAWFIXED; @@ -454,8 +461,7 @@ wxString wxListBox::GetString(int N) const // +1 for terminating NUL wxString result; - ListBox_GetText(GetHwnd(), N, result.GetWriteBuf(len + 1)); - result.UngetWriteBuf(); + ListBox_GetText(GetHwnd(), N, wxStringBuffer(result, len + 1)); return result; } @@ -583,13 +589,15 @@ void wxListBox::SetHorizontalExtent(const wxString& s) oldFont = (HFONT) ::SelectObject(dc, (HFONT) GetFont().GetResourceHandle()); GetTextMetrics(dc, &lpTextMetric); - int i; - for (i = 0; i < m_noItems; i++) + + // FIXME: buffer overflow!! + wxChar buf[1024]; + for (int i = 0; i < m_noItems; i++) { - int len = (int)SendMessage(GetHwnd(), LB_GETTEXT, i, (LONG)wxBuffer); - wxBuffer[len] = 0; + int len = (int)SendMessage(GetHwnd(), LB_GETTEXT, i, (LPARAM)buf); + buf[len] = 0; SIZE extentXY; - ::GetTextExtentPoint(dc, (LPTSTR)wxBuffer, len, &extentXY); + ::GetTextExtentPoint(dc, buf, len, &extentXY); int extentX = (int)(extentXY.cx + lpTextMetric.tmAveCharWidth); if (extentX > largestExtent) largestExtent = extentX; @@ -701,7 +709,11 @@ bool wxListBox::MSWOnMeasure(WXMEASUREITEMSTRUCT *item) MEASUREITEMSTRUCT *pStruct = (MEASUREITEMSTRUCT *)item; +#ifdef __WXWINCE__ + HDC hdc = GetDC(NULL); +#else HDC hdc = CreateIC(wxT("DISPLAY"), NULL, NULL, 0); +#endif wxDC dc; dc.SetHDC((WXHDC)hdc);