+WXHWND wxComboBox::GetEditHWNDIfAvailable() const
+{
+ // FIXME-VC6: Only VC6 needs this guard, see WINVER definition in
+ // include/wx/msw/wrapwin.h
+#if defined(WINVER) && WINVER >= 0x0500
+ WinStruct<COMBOBOXINFO> info;
+ if ( MSWGetComboBoxInfo(&info) )
+ return info.hwndItem;
+#endif // WINVER >= 0x0500
+
+ if (HasFlag(wxCB_SIMPLE))
+ {
+ POINT pt;
+ pt.x = pt.y = 4;
+ return (WXHWND) ::ChildWindowFromPoint(GetHwnd(), pt);
+ }
+
+ // notice that a slightly safer alternative could be to use FindWindowEx()
+ // but it's not available under WinCE so just take the first child for now
+ // to keep one version of the code for all platforms and fix it later if
+ // problems are discovered
+
+ // we assume that the only child of the combobox is the edit window
+ return (WXHWND)::GetWindow(GetHwnd(), GW_CHILD);
+}
+
+WXHWND wxComboBox::GetEditHWND() const
+{
+ // this function should not be called for wxCB_READONLY controls, it is
+ // the callers responsibility to check this
+ wxASSERT_MSG( !HasFlag(wxCB_READONLY),
+ wxT("read-only combobox doesn't have any edit control") );
+
+ WXHWND hWndEdit = GetEditHWNDIfAvailable();
+ wxASSERT_MSG( hWndEdit, wxT("combobox without edit control?") );
+
+ return hWndEdit;
+}
+
+wxWindow *wxComboBox::GetEditableWindow()
+{
+ wxASSERT_MSG( !HasFlag(wxCB_READONLY),
+ wxT("read-only combobox doesn't have any edit control") );
+
+ return this;
+}
+
+// ----------------------------------------------------------------------------
+// wxComboBox creation
+// ----------------------------------------------------------------------------
+