return TRUE;
}
+wxChoice::~wxChoice()
+{
+ Free();
+}
+
// ----------------------------------------------------------------------------
// adding/deleting items to/from the list
// ----------------------------------------------------------------------------
}
void wxChoice::Clear()
+{
+ Free();
+
+ SendMessage(GetHwnd(), CB_RESETCONTENT, 0, 0);
+}
+
+void wxChoice::Free()
{
if ( HasClientObjectData() )
{
delete GetClientObject(n);
}
}
-
- SendMessage(GetHwnd(), CB_RESETCONTENT, 0, 0);
}
// ----------------------------------------------------------------------------
wxLogLastError(wxT("CB_GETITEMDATA"));
// unfortunately, there is no way to return an error code to the user
- rc = (LPARAM) NULL;
+ rc = (LPARAM) NULL;
}
return (void *)rc;
return FALSE;
}
- wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId);
- event.SetInt(GetSelection());
- event.SetEventObject(this);
- event.SetString(GetStringSelection());
- ProcessCommand(event);
+ 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;
}