X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5aaabb37107a52c9c28438fea8e3f81c12cd759e..3b880f293e6c07997a47ab6535ca1bb77a7bc19f:/src/msw/wince/choicece.cpp?ds=sidebyside diff --git a/src/msw/wince/choicece.cpp b/src/msw/wince/choicece.cpp index 231b96e90f..397ba4ec14 100644 --- a/src/msw/wince/choicece.cpp +++ b/src/msw/wince/choicece.cpp @@ -109,6 +109,22 @@ LRESULT APIENTRY _EXPORT wxBuddyChoiceWndProc(HWND hwnd, hwnd, message, wParam, lParam); } +wxChoice *wxChoice::GetChoiceForListBox(WXHWND hwndBuddy) +{ + wxChoice *choice = (wxChoice *)wxGetWindowUserData((HWND)hwndBuddy); + + int i = ms_allChoiceSpins.Index(choice); + + if ( i == wxNOT_FOUND ) + return NULL; + + // sanity check + wxASSERT_MSG( choice->m_hwndBuddy == hwndBuddy, + _T("wxChoice has incorrect buddy HWND!") ); + + return choice; +} + // ---------------------------------------------------------------------------- // creation // ---------------------------------------------------------------------------- @@ -284,9 +300,36 @@ WXDWORD wxChoice::MSWGetStyle(long style, WXDWORD *exstyle) const if ( style & wxCB_SORT ) msStyle |= LBS_SORT; + msStyle |= LBS_NOTIFY; + return msStyle; } +bool wxChoice::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) +{ + if ( param != LBN_SELCHANGE) + { + // "selection changed" is the only event we're after + return false; + } + + int n = GetSelection(); + if (n > -1) + { + wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId); + event.SetInt(n); + event.SetEventObject(this); + event.SetString(GetStringSelection()); + if ( HasClientObjectData() ) + event.SetClientObject( GetClientObject(n) ); + else if ( HasClientUntypedData() ) + event.SetClientData( GetClientData(n) ); + ProcessCommand(event); + } + + return true; +} + wxChoice::~wxChoice() { Free();