X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/13bcc348811641ec19d2b378777c5edcf1b205a2..d7b995a4975f8d79a83029110edd8630751d55ae:/src/msw/combobox.cpp?ds=sidebyside diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp index 0967e6e574..c14341c001 100644 --- a/src/msw/combobox.cpp +++ b/src/msw/combobox.cpp @@ -213,27 +213,6 @@ LRESULT APIENTRY _EXPORT wxComboEditWndProc(HWND hWnd, return ::CallWindowProc(CASTWNDPROC gs_wndprocEdit, hWnd, message, wParam, lParam); } -WXHBRUSH wxComboBox::OnCtlColor(WXHDC pDC, - WXHWND WXUNUSED(pWnd), - WXUINT WXUNUSED(nCtlColor), - WXUINT WXUNUSED(message), - WXWPARAM WXUNUSED(wParam), - WXLPARAM WXUNUSED(lParam)) -{ - HDC hdc = (HDC)pDC; - wxColour colBack = GetBackgroundColour(); - - if (!IsEnabled()) - colBack = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); - - ::SetBkColor(hdc, wxColourToRGB(colBack)); - ::SetTextColor(hdc, wxColourToRGB(GetForegroundColour())); - - wxBrush *brush = wxTheBrushList->FindOrCreateBrush(colBack, wxSOLID); - - return (WXHBRUSH)brush->GetResourceHandle(); -} - // ---------------------------------------------------------------------------- // wxComboBox callbacks // ---------------------------------------------------------------------------- @@ -244,16 +223,13 @@ WXLRESULT wxComboBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara // colour correctly (to be the same as our own one) switch ( nMsg ) { - // we have to handle both: one for the normal case and the other for - // wxCB_READONLY - case WM_CTLCOLOREDIT: - case WM_CTLCOLORSTATIC: - WXWORD nCtlColor; - WXHDC hdc; - WXHWND hwnd; - UnpackCtlColor(wParam, lParam, &nCtlColor, &hdc, &hwnd); - - return (WXLRESULT)OnCtlColor(hdc, hwnd, nCtlColor, nMsg, wParam, lParam); + case CB_SETCURSEL: + // Selection was set with SetSelection. Update the value too. + if ((int)wParam > GetCount()) + m_value = wxEmptyString; + else + m_value = GetString(wParam); + break; } return wxChoice::MSWWindowProc(nMsg, wParam, lParam); @@ -341,7 +317,7 @@ bool wxComboBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) // want the new one) if ( sel == -1 ) { - m_value = GetValue(); + m_value = wxGetWindowText(GetHwnd()); } else // we're synthesizing text updated event from sel change { @@ -481,6 +457,7 @@ void wxComboBox::SetValue(const wxString& value) else SetWindowText(GetHwnd(), value.c_str()); + m_value = value; m_selectionOld = GetSelection(); } @@ -597,5 +574,19 @@ void wxComboBox::SetSelection(long from, long to) } } +void wxComboBox::GetSelection(long* from, long* to) const +{ + DWORD dwStart, dwEnd; + ::SendMessage(GetHwnd(), CB_GETEDITSEL, (WPARAM)&dwStart, (LPARAM)&dwEnd); + + *from = dwStart; + *to = dwEnd; +} + +int wxComboBox::GetSelection() const +{ + return wxChoice::GetSelection(); +} + #endif // wxUSE_COMBOBOX