]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combobox.cpp
removed (unused) nCtlColor parameter of OnCtlColor(); added MSWControlColor(); implem...
[wxWidgets.git] / src / msw / combobox.cpp
index 0967e6e57442e254735f2e320b5c0ca9d03af605..202dd9de97963a92e2f20d01b34cfdde7052fd00 100644 (file)
@@ -254,6 +254,15 @@ WXLRESULT wxComboBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara
             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 +350,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 +490,7 @@ void wxComboBox::SetValue(const wxString& value)
     else
         SetWindowText(GetHwnd(), value.c_str());
 
+    m_value = value;
     m_selectionOld = GetSelection();
 }
 
@@ -597,5 +607,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