]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
Committing in .
[wxWidgets.git] / src / msw / textctrl.cpp
index 0de8b105d56145bad059dcec0a3239e9679bf602..4fdcde3e8332d4c46197c3a7e693c8ba193b4e82 100644 (file)
@@ -185,7 +185,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
 
     // translate wxWin style flags to MSW ones, checking for consistency while
     // doing it
-    long msStyle = ES_LEFT | WS_VISIBLE | WS_CHILD | WS_TABSTOP;
+    long msStyle = ES_LEFT | WS_TABSTOP;
 
     if ( m_windowStyle & wxCLIP_SIBLINGS )
         msStyle |= WS_CLIPSIBLINGS;
@@ -200,21 +200,27 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
             msStyle |= WS_VSCROLL;
         m_windowStyle |= wxTE_PROCESS_ENTER;
     }
-    else
+    else // !multiline
+    {
+        // there is really no reason to not have this style for single line
+        // text controls
         msStyle |= ES_AUTOHSCROLL;
+    }
 
-    if (m_windowStyle & wxHSCROLL)
-        msStyle |= (WS_HSCROLL | ES_AUTOHSCROLL);
+    if ( m_windowStyle & wxHSCROLL )
+        msStyle |= WS_HSCROLL | ES_AUTOHSCROLL;
 
-    if (m_windowStyle & wxTE_READONLY)
+    if ( m_windowStyle & wxTE_READONLY )
         msStyle |= ES_READONLY;
 
-    if (m_windowStyle & wxTE_PASSWORD) // hidden input
+    if ( m_windowStyle & wxTE_PASSWORD )
         msStyle |= ES_PASSWORD;
 
-   if (m_windowStyle & wxTE_AUTO_SCROLL)
-        msStyle |=  ES_AUTOHSCROLL;
+    if ( m_windowStyle & wxTE_AUTO_SCROLL )
+        msStyle |= ES_AUTOHSCROLL;
 
+    if ( m_windowStyle & wxTE_NOHIDESEL )
+        msStyle |= ES_NOHIDESEL;
 
     // we always want the characters and the arrows
     m_lDlgCode = DLGC_WANTCHARS | DLGC_WANTARROWS;
@@ -291,36 +297,10 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
         m_isRich = FALSE;
 #endif // wxUSE_RICHEDIT
 
-    bool want3D;
-    WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D);
-
-    // Even with extended styles, need to combine with WS_BORDER for them to
-    // look right.
-    if ( want3D || wxStyleHasBorder(m_windowStyle) )
-        msStyle |= WS_BORDER;
-
-    // NB: don't use pos and size as CreateWindowEx arguments because they
-    //     might be -1 in which case we should use the default values (and
-    //     SetSize called below takes care of it)
-    m_hWnd = (WXHWND)::CreateWindowEx(exStyle,
-                                      windowClass.c_str(),
-                                      NULL,
-                                      msStyle,
-                                      0, 0, 0, 0,
-                                      GetHwndOf(parent),
-                                      (HMENU)m_windowId,
-                                      wxGetInstance(),
-                                      NULL);
-
-    wxCHECK_MSG( m_hWnd, FALSE, wxT("Failed to create text ctrl") );
+    if ( !MSWCreateControl(windowClass, msStyle, pos, size, value) )
+        return FALSE;
 
-#if wxUSE_CTL3D
-    if ( want3D )
-    {
-        Ctl3dSubclassCtl(GetHwnd());
-        m_useCtl3D = TRUE;
-    }
-#endif
+    SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW));
 
 #if wxUSE_RICHEDIT
     if (m_isRich)
@@ -339,32 +319,6 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
     }
 #endif // wxUSE_RICHEDIT
 
-    SubclassWin(GetHWND());
-
-    // set font, position, size and initial value
-    wxFont& fontParent = parent->GetFont();
-    if ( fontParent.Ok() )
-    {
-        SetFont(fontParent);
-    }
-    else
-    {
-        SetFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT));
-    }
-
-    // Causes a crash for Symantec C++ and WIN32 for some reason
-#if !(defined(__SC__) && defined(__WIN32__))
-    if ( !value.IsEmpty() )
-    {
-        SetValue(value);
-    }
-#endif
-
-    // set colours
-    SetupColours();
-
-    SetSize(pos.x, pos.y, size.x, size.y);
-
     return TRUE;
 }
 
@@ -398,18 +352,6 @@ void wxTextCtrl::AdoptAttributesFromHWND()
     m_windowStyle |= wxTE_PROCESS_ENTER;
 }
 
-void wxTextCtrl::SetupColours()
-{
-    wxColour bkgndColour;
-//    if (IsEditable() || (m_windowStyle & wxTE_MULTILINE))
-        bkgndColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW);
-//    else
-//        bkgndColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
-
-    SetBackgroundColour(bkgndColour);
-    SetForegroundColour(GetParent()->GetForegroundColour());
-}
-
 // ----------------------------------------------------------------------------
 // set/get the controls text
 // ----------------------------------------------------------------------------