// when Enter is pressed
if ( wParam == VK_RETURN )
{
+ if (SendMessage(GetHwnd(), CB_GETDROPPEDSTATE, 0, 0))
+ return false;
+
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
const int sel = GetSelection();
// skip wxChoice version as it would generate its own events for
// CBN_SELENDOK
- return wxControl::MSWCommand(param, id);
+ return true;
}
WXHWND wxComboBox::GetEditHWND() const
return !HasFlag(wxCB_READONLY);
}
-void wxComboBox::SetEditable(bool WXUNUSED(editable))
+void wxComboBox::SetEditable(bool editable)
{
- // Can't implement in MSW?
-// HWND hWnd = GetHwnd();
-// SendMessage(hWnd, EM_SETREADONLY, (WPARAM)!editable, (LPARAM)0L);
+ HWND hWnd = (HWND)GetEditHWND();
+ if ( !::SendMessage(hWnd, EM_SETREADONLY, !editable, 0) )
+ {
+ wxLogLastError(_T("SendMessage(EM_SETREADONLY)"));
+ }
}
void wxComboBox::SetInsertionPoint(long pos)
if ( GetWindowStyle() & wxCB_READONLY )
return;
-#ifdef __WIN32__
HWND hWnd = GetHwnd();
::SendMessage(hWnd, CB_SETEDITSEL, 0, MAKELPARAM(pos, pos));
HWND hEditWnd = (HWND) GetEditHWND();
// Why is this necessary? (Copied from wxTextCtrl::SetInsertionPoint)
SendMessage(hEditWnd, EM_REPLACESEL, 0, (LPARAM) wxEmptyString);
}
-#endif // __WIN32__
}
void wxComboBox::SetInsertionPointEnd()