]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
bitmap and image updates
[wxWidgets.git] / src / msw / textctrl.cpp
index fc7e926e8c4bd7f6203dee2d747972302ef729ec..86967c3addf82400e9efaa1eb9c83270229c3739 100644 (file)
     #include "wx/settings.h"
     #include "wx/brush.h"
     #include "wx/utils.h"
+    #include "wx/intl.h"
     #include "wx/log.h"
+    #include "wx/app.h"
 #endif
 
 #if wxUSE_CLIPBOARD
-    #include "wx/app.h"
     #include "wx/clipbrd.h"
 #endif
 
@@ -57,7 +58,7 @@
 #   include <fstream>
 #endif
 
-#if wxUSE_RICHEDIT && (!defined(__GNUWIN32__) || defined(wxUSE_NORLANDER_HEADERS))
+#if wxUSE_RICHEDIT
     #include <richedit.h>
 #endif
 
@@ -115,8 +116,6 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
     if ( !CreateBase(parent, id, pos, size, style, validator, name) )
         return FALSE;
 
-    // Validator was set in CreateBase
-    //SetValidator(validator);
     if ( parent )
         parent->AddChild(this);
 
@@ -130,7 +129,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
     {
         wxASSERT_MSG( !(m_windowStyle & wxTE_PROCESS_ENTER),
                       wxT("wxTE_PROCESS_ENTER style is ignored for multiline "
-                         "text controls (they always process it)") );
+                          "text controls (they always process it)") );
 
         msStyle |= ES_MULTILINE | ES_WANTRETURN;
         if ((m_windowStyle & wxTE_NO_VSCROLL) == 0)
@@ -172,9 +171,32 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
 #if wxUSE_RICHEDIT
     if ( m_windowStyle & wxTE_RICH )
     {
-        msStyle |= ES_AUTOVSCROLL;
-        m_isRich = TRUE;
-        windowClass = wxT("RICHEDIT");
+        static bool s_errorGiven = FALSE;   // MT-FIXME
+
+        // only give the error msg once if the DLL can't be loaded
+        if ( !s_errorGiven )
+        {
+            // first try to load the RichEdit DLL (will do nothing if already
+            // done)
+            if ( !wxTheApp->InitRichEdit() )
+            {
+                wxLogError(_("Impossible to create a rich edit control, "
+                             "using simple text control instead."));
+
+                s_errorGiven = TRUE;
+            }
+        }
+
+        if ( s_errorGiven )
+        {
+            m_isRich = FALSE;
+        }
+        else
+        {
+            msStyle |= ES_AUTOVSCROLL;
+            m_isRich = TRUE;
+            windowClass = wxT("RICHEDIT");
+        }
     }
     else
         m_isRich = FALSE;
@@ -743,30 +765,6 @@ void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event)
     }
 }
 
-WXHBRUSH wxTextCtrl::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
-                                WXUINT message, WXWPARAM wParam,
-                                WXLPARAM lParam)
-{
-#if wxUSE_CTL3D
-    if ( m_useCtl3D )
-    {
-        HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam);
-        return (WXHBRUSH) hbrush;
-    }
-#endif
-
-    HDC hdc = (HDC)pDC;
-    SetBkMode(hdc, GetParent()->GetTransparentBackground() ? TRANSPARENT
-                                                           : OPAQUE);
-
-    ::SetBkColor(hdc, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue()));
-    ::SetTextColor(hdc, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue()));
-
-    wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID);
-
-    return (WXHBRUSH) backgroundBrush->GetResourceHandle();
-}
-
 void wxTextCtrl::OnChar(wxKeyEvent& event)
 {
     switch ( event.KeyCode() )
@@ -886,7 +884,7 @@ bool wxTextCtrl::AcceptsFocus() const
     return IsEditable() && wxControl::AcceptsFocus();
 }
 
-wxSize wxTextCtrl::DoGetBestSize()
+wxSize wxTextCtrl::DoGetBestSize() const
 {
     int cx, cy;
     wxGetCharSize(GetHWND(), &cx, &cy, &GetFont());