X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/837e57436a89516a5fa9f478f401e06bd872c17c..58c837a4e67c0996134cc0947691dc09c5f26687:/src/msw/combobox.cpp diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp index f7eff22ed6..0593b9342e 100644 --- a/src/msw/combobox.cpp +++ b/src/msw/combobox.cpp @@ -38,11 +38,14 @@ bool wxComboBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) { if (param == CBN_SELCHANGE) { - wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId); - event.SetInt(GetSelection()); - event.SetEventObject(this); - event.SetString(GetStringSelection()); - ProcessCommand(event); + if (GetSelection() > -1) + { + wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId); + event.SetInt(GetSelection()); + event.SetEventObject(this); + event.SetString(GetStringSelection()); + ProcessCommand(event); + } return TRUE; } @@ -73,7 +76,6 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, if (parent) parent->AddChild(this); SetBackgroundColour(parent->GetBackgroundColour()) ; SetForegroundColour(parent->GetForegroundColour()) ; - m_noStrings = 0; m_windowStyle = style; @@ -87,8 +89,8 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, int width = size.x; int height = size.y; - long msStyle = WS_CHILD | WS_HSCROLL | WS_VSCROLL | - WS_TABSTOP | WS_VISIBLE | CBS_NOINTEGRALHEIGHT; + long msStyle = WS_CHILD | WS_TABSTOP | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | + CBS_NOINTEGRALHEIGHT; if (m_windowStyle & wxCB_READONLY) msStyle |= CBS_DROPDOWNLIST; @@ -108,12 +110,12 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, if ( want3D || wxStyleHasBorder(m_windowStyle) ) msStyle |= WS_BORDER; - m_hWnd = (WXHWND)::CreateWindowEx(exStyle, _T("COMBOBOX"), NULL, + m_hWnd = (WXHWND)::CreateWindowEx(exStyle, wxT("COMBOBOX"), NULL, msStyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); - wxCHECK_MSG( m_hWnd, FALSE, _T("Failed to create combobox") ); + wxCHECK_MSG( m_hWnd, FALSE, wxT("Failed to create combobox") ); /* #if wxUSE_CTL3D @@ -146,11 +148,6 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, return TRUE; } -wxString wxComboBox::GetValue() const -{ - return wxGetWindowText(GetHWND()); -} - void wxComboBox::SetValue(const wxString& value) { // If newlines are denoted by just 10, must stick 13 in front. @@ -177,43 +174,43 @@ void wxComboBox::SetValue(const wxString& value) j ++; } tmp[j] = 0; - SetWindowText((HWND) GetHWND(), tmp); + SetWindowText(GetHwnd(), tmp); delete[] tmp; } else - SetWindowText((HWND) GetHWND(), (const wxChar *)value); + SetWindowText(GetHwnd(), value); } // Clipboard operations void wxComboBox::Copy() { - HWND hWnd = (HWND) GetHWND(); + HWND hWnd = GetHwnd(); SendMessage(hWnd, WM_COPY, 0, 0L); } void wxComboBox::Cut() { - HWND hWnd = (HWND) GetHWND(); + HWND hWnd = GetHwnd(); SendMessage(hWnd, WM_CUT, 0, 0L); } void wxComboBox::Paste() { - HWND hWnd = (HWND) GetHWND(); + HWND hWnd = GetHwnd(); SendMessage(hWnd, WM_PASTE, 0, 0L); } void wxComboBox::SetEditable(bool editable) { // Can't implement in MSW? -// HWND hWnd = (HWND) GetHWND(); +// HWND hWnd = GetHwnd(); // SendMessage(hWnd, EM_SETREADONLY, (WPARAM)!editable, (LPARAM)0L); } void wxComboBox::SetInsertionPoint(long pos) { /* - HWND hWnd = (HWND) GetHWND(); + HWND hWnd = GetHwnd(); #ifdef __WIN32__ SendMessage(hWnd, EM_SETSEL, pos, pos); SendMessage(hWnd, EM_SCROLLCARET, (WPARAM)0, (LPARAM)0); @@ -236,7 +233,7 @@ void wxComboBox::SetInsertionPointEnd() long wxComboBox::GetInsertionPoint() const { /* - DWORD Pos=(DWORD)SendMessage((HWND) GetHWND(), EM_GETSEL, 0, 0L); + DWORD Pos=(DWORD)SendMessage(GetHwnd(), EM_GETSEL, 0, 0L); return Pos&0xFFFF; */ return 0; @@ -245,14 +242,14 @@ long wxComboBox::GetInsertionPoint() const long wxComboBox::GetLastPosition() const { /* - HWND hWnd = (HWND) GetHWND(); + HWND hWnd = GetHwnd(); // Will always return a number > 0 (according to docs) int noLines = (int)SendMessage(hWnd, EM_GETLINECOUNT, (WPARAM)0, (LPARAM)0L); // This gets the char index for the _beginning_ of the last line int charIndex = (int)SendMessage(hWnd, EM_LINEINDEX, (WPARAM)(noLines-1), (LPARAM)0L); - + // Get number of characters in the last line. We'll add this to the character // index for the last line, 1st position. int lineLength = (int)SendMessage(hWnd, EM_LINELENGTH, (WPARAM)charIndex, (LPARAM)0L); @@ -265,10 +262,10 @@ long wxComboBox::GetLastPosition() const void wxComboBox::Replace(long from, long to, const wxString& value) { #if wxUSE_CLIPBOARD - HWND hWnd = (HWND) GetHWND(); + HWND hWnd = GetHwnd(); long fromChar = from; long toChar = to; - + // Set selection and remove it #ifdef __WIN32__ SendMessage(hWnd, CB_SETEDITSEL, fromChar, toChar); @@ -287,10 +284,10 @@ void wxComboBox::Replace(long from, long to, const wxString& value) void wxComboBox::Remove(long from, long to) { - HWND hWnd = (HWND) GetHWND(); + HWND hWnd = GetHwnd(); long fromChar = from; long toChar = to; - + // Cut all selected text #ifdef __WIN32__ SendMessage(hWnd, CB_SETEDITSEL, fromChar, toChar); @@ -302,7 +299,7 @@ void wxComboBox::Remove(long from, long to) void wxComboBox::SetSelection(long from, long to) { - HWND hWnd = (HWND) GetHWND(); + HWND hWnd = GetHwnd(); long fromChar = from; long toChar = to; // if from and to are both -1, it means @@ -313,7 +310,7 @@ void wxComboBox::SetSelection(long from, long to) fromChar = 0; toChar = -1; } - + #ifdef __WIN32__ SendMessage(hWnd, CB_SETEDITSEL, (WPARAM)fromChar, (LPARAM)toChar); // SendMessage(hWnd, EM_SCROLLCARET, (WPARAM)0, (LPARAM)0); @@ -323,6 +320,13 @@ void wxComboBox::SetSelection(long from, long to) #endif } +void wxComboBox::DoSetSize(int x, int y, + int width, int height, + int sizeFlags) +{ + wxControl::DoSetSize(x, y, width, height, sizeFlags); +} + #endif // wxUSE_COMBOBOX