if ( !CreateControl(parent, id, pos, size, style, validator, name) )
return FALSE;
- long msStyle = WS_CHILD | CBS_DROPDOWNLIST | WS_TABSTOP | WS_VISIBLE;
+ long msStyle = WS_CHILD | CBS_DROPDOWNLIST | WS_TABSTOP | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL;
if ( style & wxCB_SORT )
msStyle |= CBS_SORT;
wxASSERT_MSG( !(style & wxCB_DROPDOWN) &&
!(style & wxCB_READONLY) &&
!(style & wxCB_SIMPLE),
- _T("this style flag is ignored by wxChoice, you "
+ wxT("this style flag is ignored by wxChoice, you "
"probably want to use a wxComboBox") );
- if ( !MSWCreateControl(_T("COMBOBOX"), msStyle) )
+ if ( !MSWCreateControl(wxT("COMBOBOX"), msStyle) )
return FALSE;
for ( int i = 0; i < n; i++ )
// adding/deleting items to/from the list
// ----------------------------------------------------------------------------
-void wxChoice::DoAppend(const wxString& item)
+int wxChoice::DoAppend(const wxString& item)
{
- SendMessage(GetHwnd(), CB_ADDSTRING, 0, (LONG)item.c_str());
+ int n = (int)SendMessage(GetHwnd(), CB_ADDSTRING, 0, (LONG)item.c_str());
+ if ( n == CB_ERR )
+ {
+ wxLogLastError("SendMessage(CB_ADDSTRING)");
+ }
+
+ return n;
}
void wxChoice::Delete(int n)
{
- wxCHECK_RET( n < GetCount(), _T("invalid item index in wxChoice::Delete") );
+ wxCHECK_RET( n < GetCount(), wxT("invalid item index in wxChoice::Delete") );
SendMessage(GetHwnd(), CB_DELETESTRING, n, 0);
}
wxString wxChoice::GetString(int n) const
{
size_t len = (size_t)::SendMessage(GetHwnd(), CB_GETLBTEXTLEN, n, 0);
- wxString str;
- if ( ::SendMessage(GetHwnd(), CB_GETLBTEXT, n,
- (LPARAM)str.GetWriteBuf(len)) == CB_ERR )
- {
- wxLogLastError("SendMessage(CB_GETLBTEXT)");
+ wxString str = "";
+ if (len) {
+ if ( ::SendMessage(GetHwnd(), CB_GETLBTEXT, n,
+ (LPARAM)str.GetWriteBuf(len)) == CB_ERR ) {
+ wxLogLastError("SendMessage(CB_GETLBTEXT)");
+ }
+ str.UngetWriteBuf();
}
- str.UngetWriteBuf();
-
return str;
}
{
if ( SendMessage(GetHwnd(), CB_SETITEMDATA, n, (LPARAM)clientData) == CB_ERR )
{
- wxLogLastError(_T("CB_SETITEMDATA"));
+ wxLogLastError(wxT("CB_SETITEMDATA"));
}
}
LPARAM rc = SendMessage(GetHwnd(), CB_GETITEMDATA, n, 0);
if ( rc == CB_ERR )
{
- wxLogLastError(_T("CB_GETITEMDATA"));
+ wxLogLastError(wxT("CB_GETITEMDATA"));
// unfortunately, there is no way to return an error code to the user
- rc = NULL;
+ rc = (LPARAM) NULL;
}
return (void *)rc;