+ m_strings->RemoveAt(n);
+}
+
+// ----------------------------------------------------------------------------
+// client data
+// ----------------------------------------------------------------------------
+
+void wxListBox::DoSetItemClientData(unsigned int n, void* clientData)
+{
+ wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
+
+ wxList::compatibility_iterator node = m_clientList.Item( n );
+ wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") );
+
+ node->SetData( (wxObject*) clientData );
+}
+
+void* wxListBox::DoGetItemClientData(unsigned int n) const
+{
+ wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") );
+
+ wxList::compatibility_iterator node = m_clientList.Item( n );
+ wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") );
+
+ return node->GetData();
+}
+
+void wxListBox::DoSetItemClientObject(unsigned int n, wxClientData* clientData)
+{
+ wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
+
+ wxList::compatibility_iterator node = m_clientList.Item( n );
+ wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") );
+
+ // wxItemContainer already deletes data for us
+
+ node->SetData( (wxObject*) clientData );
+}
+
+wxClientData* wxListBox::DoGetItemClientObject(unsigned int n) const
+{
+ wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") );
+
+ wxList::compatibility_iterator node = m_clientList.Item( n );
+ wxCHECK_MSG( node, (wxClientData *)NULL,
+ wxT("invalid index in wxListBox::DoGetItemClientObject") );
+
+ return (wxClientData*) node->GetData();