return false;
// now create the real HWND
- if ( !MSWCreateControl(wxT("COMBOBOX"), _T(""), pos, size) )
+ if ( !MSWCreateControl(wxT("COMBOBOX"), wxEmptyString, pos, size) )
return false;
{
int pos = (int)SendMessage(GetHwnd(), CB_FINDSTRINGEXACT,
(WPARAM)-1, (LPARAM)s.c_str());
-
+
return pos == LB_ERR ? wxNOT_FOUND : pos;
}
#endif // Watcom/!Watcom
const int hItem = SendMessage(GetHwnd(), CB_GETITEMHEIGHT, 0, 0);
height += hItem*(nItems + 1);
}
+ else
+ {
+ // We cannot pass wxDefaultCoord as height to wxControl. wxControl uses
+ // wxGetWindowRect() to determine the current height of the combobox,
+ // and then again sets the combobox's height to that value. Unfortunately,
+ // wxGetWindowRect doesn't include the dropdown list's height (at least
+ // on Win2K), so this would result in a combobox with dropdown height of
+ // 1 pixel. We have to determine the default height ourselves and call
+ // wxControl with that value instead.
+ int w, h;
+ RECT r;
+ DoGetSize(&w, &h);
+ if (::SendMessage(GetHwnd(), CB_GETDROPPEDCONTROLRECT, 0, (LPARAM) &r) != 0)
+ {
+ height = h + r.bottom - r.top;
+ }
+ }
wxControl::DoSetSize(x, y, width, height, sizeFlags);