X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3e3be693d0e18531299c8f45d27d79f23f948eba..2fc2d511d0f095ab5de3713cff6042832f886d15:/src/msw/listbox.cpp diff --git a/src/msw/listbox.cpp b/src/msw/listbox.cpp index 8a3588b32c..503f55bc3a 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 @@ -47,7 +47,73 @@ #include "wx/msw/gnuwin32/extra.h" #endif +#if wxUSE_EXTENDED_RTTI +WX_DEFINE_FLAGS( wxListBoxStyle ) + +WX_BEGIN_FLAGS( wxListBoxStyle ) + // new style border flags, we put them first to + // use them for streaming out + WX_FLAGS_MEMBER(wxBORDER_SIMPLE) + WX_FLAGS_MEMBER(wxBORDER_SUNKEN) + WX_FLAGS_MEMBER(wxBORDER_DOUBLE) + WX_FLAGS_MEMBER(wxBORDER_RAISED) + WX_FLAGS_MEMBER(wxBORDER_STATIC) + WX_FLAGS_MEMBER(wxBORDER_NONE) + + // old style border flags + WX_FLAGS_MEMBER(wxSIMPLE_BORDER) + WX_FLAGS_MEMBER(wxSUNKEN_BORDER) + WX_FLAGS_MEMBER(wxDOUBLE_BORDER) + WX_FLAGS_MEMBER(wxRAISED_BORDER) + WX_FLAGS_MEMBER(wxSTATIC_BORDER) + WX_FLAGS_MEMBER(wxNO_BORDER) + + // standard window styles + WX_FLAGS_MEMBER(wxTAB_TRAVERSAL) + WX_FLAGS_MEMBER(wxCLIP_CHILDREN) + WX_FLAGS_MEMBER(wxTRANSPARENT_WINDOW) + WX_FLAGS_MEMBER(wxWANTS_CHARS) + WX_FLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE) + WX_FLAGS_MEMBER(wxALWAYS_SHOW_SB ) + WX_FLAGS_MEMBER(wxVSCROLL) + WX_FLAGS_MEMBER(wxHSCROLL) + + WX_FLAGS_MEMBER(wxLB_SINGLE) + WX_FLAGS_MEMBER(wxLB_MULTIPLE) + WX_FLAGS_MEMBER(wxLB_EXTENDED) + WX_FLAGS_MEMBER(wxLB_HSCROLL) + WX_FLAGS_MEMBER(wxLB_ALWAYS_SB) + WX_FLAGS_MEMBER(wxLB_NEEDED_SB) + WX_FLAGS_MEMBER(wxLB_SORT) + +WX_END_FLAGS( wxListBoxStyle ) + +IMPLEMENT_DYNAMIC_CLASS_XTI(wxListBox, wxControl,"wx/listbox.h") + +WX_BEGIN_PROPERTIES_TABLE(wxListBox) + WX_EVENT_PROPERTY( Select , wxEVT_COMMAND_LISTBOX_SELECTED , wxCommandEvent ) + WX_EVENT_PROPERTY( DoubleClick , wxEVT_COMMAND_LISTBOX_DOUBLECLICKED , wxCommandEvent ) + + WX_PROPERTY( Font , wxFont , SetFont , GetFont , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) + WX_PROPERTY_COLLECTION( Choices , wxArrayString , wxString , AppendString , GetStrings, 0 /*flags*/ , wxT("Helpstring") , wxT("group") ) + WX_PROPERTY( Selection ,int, SetSelection, GetSelection,, 0 /*flags*/ , wxT("Helpstring") , wxT("group") ) + WX_PROPERTY_FLAGS( WindowStyle , wxListBoxStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxListBox) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_4( wxListBox , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size ) +#else IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl) +#endif + +/* +TODO PROPERTIES + selection + content + item +*/ // ============================================================================ // list box item declaration and implementation @@ -145,7 +211,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 +520,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; } @@ -703,7 +768,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);