]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/choice.cpp
don't disable top level children in parents Enable()
[wxWidgets.git] / src / msw / choice.cpp
index 8ef52dbcff5e8855a10be52fb43dae6598911153..41af85d6a400685d793e7db25b9237580dbf3891 100644 (file)
@@ -191,21 +191,18 @@ int wxChoice::FindString(const wxString& s) const
 #endif // Watcom/!Watcom
 }
 
-void wxChoice::SetString(int WXUNUSED(n), const wxString& WXUNUSED(s))
+void wxChoice::SetString(int n, const wxString& s)
 {
-    wxFAIL_MSG(wxT("not implemented"));
-
-#if 0 // should do this, but no Insert() so far
-    Delete(n);
-    Insert(n + 1, s);
-#endif
+    wxCHECK_RET( (n>=0)&&(n<GetCount()), wxT("invalid item index in wxChoice::SetString") );
+    SendMessage(GetHwnd(), CB_DELETESTRING, n, 0);
+    SendMessage(GetHwnd(), CB_INSERTSTRING, n, (LONG)s.c_str() );
 }
 
 wxString wxChoice::GetString(int n) const
 {
     size_t len = (size_t)::SendMessage(GetHwnd(), CB_GETLBTEXTLEN, n, 0);
     wxString str;
-    if (len) {
+    if (len != CB_ERR && len > 0) {
         if ( ::SendMessage(GetHwnd(), CB_GETLBTEXT, n,
                            (LPARAM)str.GetWriteBuf(len)) == CB_ERR ) {
             wxLogLastError(wxT("SendMessage(CB_GETLBTEXT)"));
@@ -283,6 +280,7 @@ void wxChoice::DoSetSize(int x, int y,
     // wxWindows interpretation is different; also, getting the size returns
     // the _displayed_ size (NOT the drop down menu size) so
     // setting-getting-setting size would not work.
+
     wxControl::DoSetSize(x, y, width, -1, sizeFlags);
 }