+namespace
+{
+
+// there is a difference between the height passed to CB_SETITEMHEIGHT and the
+// real height of the combobox; it is probably not constant for all Windows
+// versions/settings but right now I don't know how to find what it is so it is
+// temporarily hardcoded to its value under XP systems with normal fonts sizes
+const int COMBO_HEIGHT_ADJ = 6;
+
+} // anonymous namespace
+
+void wxChoice::MSWUpdateVisibleHeight()
+{
+ if ( m_heightOwn != wxDefaultCoord )
+ {
+ ::SendMessage(GetHwnd(), CB_SETITEMHEIGHT,
+ (WPARAM)-1, m_heightOwn - COMBO_HEIGHT_ADJ);
+ }
+}
+
+#if wxUSE_DEFERRED_SIZING
+void wxChoice::MSWEndDeferWindowPos()
+{
+ // we can only set the height of the choice itself now as it is reset to
+ // default every time the control is resized
+ MSWUpdateVisibleHeight();
+
+ wxChoiceBase::MSWEndDeferWindowPos();
+}
+#endif // wxUSE_DEFERRED_SIZING
+
+void wxChoice::MSWUpdateDropDownHeight()