+WXDWORD wxComboBox::MSWGetStyle(long style, WXDWORD *exstyle) const
+{
+ // we never have an external border
+ WXDWORD msStyle = wxChoice::MSWGetStyle
+ (
+ (style & ~wxBORDER_MASK) | wxBORDER_NONE, exstyle
+ );
+
+ // usually WS_TABSTOP is added by wxControl::MSWGetStyle() but as we're
+ // created hidden (see Create() above), it is not done for us but we still
+ // want to have this style
+ msStyle |= WS_TABSTOP;
+
+ // remove the style always added by wxChoice
+ msStyle &= ~CBS_DROPDOWNLIST;
+
+ if ( style & wxCB_READONLY )
+ msStyle |= CBS_DROPDOWNLIST;
+#ifndef __WXWINCE__
+ else if ( style & wxCB_SIMPLE )
+ msStyle |= CBS_SIMPLE; // A list (shown always) and edit control
+#endif
+ else
+ msStyle |= CBS_DROPDOWN;
+
+ // there is no reason to not always use CBS_AUTOHSCROLL, so do use it
+ msStyle |= CBS_AUTOHSCROLL;
+
+ // NB: we used to also add CBS_NOINTEGRALHEIGHT here but why?
+
+ return msStyle;
+}
+
+// ----------------------------------------------------------------------------
+// wxComboBox geometry
+// ----------------------------------------------------------------------------
+
+void
+wxComboBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
+{
+ // work around a Windows bug (search for "Bug in Windows Combobox" in
+ // Google Groups): resizing the combobox changes the selection in it
+ long fromOld, toOld;
+ GetSelection(&fromOld, &toOld);
+
+ wxChoice::DoSetSize(x, y, width, height, sizeFlags);
+
+ long fromNew, toNew;
+ GetSelection(&fromNew, &toNew);
+
+ if ( fromOld != fromNew || toOld != toNew )
+ {
+ SetSelection(fromOld, toOld);
+ }
+}
+
+// ----------------------------------------------------------------------------
+// wxComboBox text control-like methods
+// ----------------------------------------------------------------------------
+