Browse Source

In BCB11 TRichEdit uses MSFTEDIT.DLL/MSFTEDIT_CLASS by default already

Source commit: 0dec9fb6e32afbbd57ea79438181c6433f2aa6a0
Martin Prikryl 11 months ago
parent
commit
bf735c00c7
4 changed files with 15 additions and 78 deletions
  1. 9 9
      source/forms/Editor.cpp
  2. 6 5
      source/forms/GenerateUrl.cpp
  3. 0 48
      source/windows/GUITools.cpp
  4. 0 16
      source/windows/GUITools.h

+ 9 - 9
source/forms/Editor.cpp

@@ -144,7 +144,7 @@ int __fastcall TPreambleFilteringFileStream::Write(
   EXCEPTION;
 }
 //---------------------------------------------------------------------------
-class TEditorRichEdit : public TNewRichEdit
+class TEditorRichEdit : public TRichEdit
 {
 public:
   virtual __fastcall TEditorRichEdit(TComponent * AOwner);
@@ -191,7 +191,7 @@ private:
 };
 //---------------------------------------------------------------------------
 __fastcall TEditorRichEdit::TEditorRichEdit(TComponent * AOwner) :
-  TNewRichEdit(AOwner),
+  TRichEdit(AOwner),
   FLibrary(0),
   FTabSize(0),
   FWordWrap(true),
@@ -290,7 +290,7 @@ void __fastcall TEditorRichEdit::Redo()
 //---------------------------------------------------------------------------
 void __fastcall TEditorRichEdit::CreateParams(TCreateParams & Params)
 {
-  TNewRichEdit::CreateParams(Params);
+  TRichEdit::CreateParams(Params);
 
   Params.Style = Params.Style |
     (HideScrollBars ? 0 : ES_DISABLENOSCROLL) |
@@ -301,7 +301,7 @@ void __fastcall TEditorRichEdit::CreateParams(TCreateParams & Params)
 //---------------------------------------------------------------------------
 void __fastcall TEditorRichEdit::CreateWnd()
 {
-  TNewRichEdit::CreateWnd();
+  TRichEdit::CreateWnd();
   if (!WinConfiguration->Editor.AutoFont)
   {
     int LangOptions = SendMessage(Handle, EM_GETLANGOPTIONS, 0, 0);
@@ -407,7 +407,7 @@ void __fastcall TEditorRichEdit::EMStreamIn(TMessage & Message)
   LoadInfo.StreamInfo = reinterpret_cast<TRichEditStreamInfo *>(EditStream->dwCookie);
   LoadInfo.RichEdit = this;
   EditStream->dwCookie = reinterpret_cast<DWORD_PTR>(&LoadInfo);
-  TNewRichEdit::Dispatch(&Message);
+  TRichEdit::Dispatch(&Message);
 }
 //---------------------------------------------------------------------------
 void TEditorRichEdit::WMMouseWheel(TMessage & Message)
@@ -434,7 +434,7 @@ void TEditorRichEdit::WMMouseWheel(TMessage & Message)
   }
   else
   {
-    TNewRichEdit::Dispatch(&Message);
+    TRichEdit::Dispatch(&Message);
   }
 }
 //---------------------------------------------------------------------------
@@ -445,7 +445,7 @@ void TEditorRichEdit::WMMouseActivate(TWMMouseActivate & Message)
   {
     SetFocus();
   }
-  TNewRichEdit::Dispatch(&Message);
+  TRichEdit::Dispatch(&Message);
 }
 //---------------------------------------------------------------------------
 void __fastcall TEditorRichEdit::Dispatch(void * Message)
@@ -470,7 +470,7 @@ void __fastcall TEditorRichEdit::Dispatch(void * Message)
       break;
 
     default:
-      TNewRichEdit::Dispatch(Message);
+      TRichEdit::Dispatch(Message);
       break;
   }
 }
@@ -652,7 +652,7 @@ void __fastcall TEditorRichEdit::KeyDown(Word & Key, TShiftState Shift)
   {
     Key = 0;
   }
-  TNewRichEdit::KeyDown(Key, Shift);
+  TRichEdit::KeyDown(Key, Shift);
 }
 //---------------------------------------------------------------------------
 class TFindDialogEx : public TFindDialog

+ 6 - 5
source/forms/GenerateUrl.cpp

@@ -45,7 +45,7 @@ void __fastcall DoGenerateTransferCodeDialog(
   Dialog->Execute();
 }
 //---------------------------------------------------------------------------
-class TRichEditWithLinks : public TNewRichEdit
+class TRichEditWithLinks : public TRichEdit
 {
 public:
   virtual __fastcall TRichEditWithLinks(TComponent * AOwner);
@@ -56,15 +56,16 @@ protected:
 };
 //---------------------------------------------------------------------------
 __fastcall TRichEditWithLinks::TRichEditWithLinks(TComponent * AOwner) :
-  TNewRichEdit(AOwner)
+  TRichEdit(AOwner)
 {
 }
 //---------------------------------------------------------------------------
 void __fastcall TRichEditWithLinks::CreateWnd()
 {
-  TNewRichEdit::CreateWnd();
+  TRichEdit::CreateWnd();
   int Mask = SendMessage(Handle, EM_GETEVENTMASK, 0, 0);
   SendMessage(Handle, EM_SETEVENTMASK, 0, Mask | ENM_LINK);
+  SendMessage(Handle, EM_SETEDITSTYLEEX, 0, SES_EX_HANDLEFRIENDLYURL);
 }
 //---------------------------------------------------------------------------
 void __fastcall TRichEditWithLinks::Dispatch(void * AMessage)
@@ -97,11 +98,11 @@ void __fastcall TRichEditWithLinks::Dispatch(void * AMessage)
         }
       }
     }
-    TNewRichEdit::Dispatch(AMessage);
+    TRichEdit::Dispatch(AMessage);
   }
   else
   {
-    TNewRichEdit::Dispatch(AMessage);
+    TRichEdit::Dispatch(AMessage);
   }
 }
 //---------------------------------------------------------------------------

+ 0 - 48
source/windows/GUITools.cpp

@@ -2399,54 +2399,6 @@ void __fastcall TScreenTipHintWindow::Paint()
   }
 }
 //---------------------------------------------------------------------------
-//---------------------------------------------------------------------------
-__fastcall TNewRichEdit::TNewRichEdit(TComponent * AOwner) :
-  TRichEdit(AOwner),
-  FLibrary(0)
-{
-}
-//---------------------------------------------------------------------------
-void __fastcall TNewRichEdit::CreateParams(TCreateParams & Params)
-{
-  UnicodeString RichEditModuleName(L"MSFTEDIT.DLL");
-  long int OldError;
-
-  OldError = SetErrorMode(SEM_NOOPENFILEERRORBOX);
-  FLibrary = LoadLibrary(RichEditModuleName.c_str());
-  SetErrorMode(OldError);
-
-  // No fallback, MSFTEDIT.DLL is available since Windows XP
-  // https://learn.microsoft.com/en-us/archive/blogs/murrays/richedit-versions
-  if (FLibrary == 0)
-  {
-    throw Exception(FORMAT(L"Cannot load %s", (RichEditModuleName)));
-  }
-
-  TCustomMemo::CreateParams(Params);
-  // MSDN says that we should use MSFTEDIT_CLASS to load Rich Edit 4.1:
-  // https://learn.microsoft.com/en-us/windows/win32/controls/about-rich-edit-controls
-  // But MSFTEDIT_CLASS is defined as "RICHEDIT50W",
-  // so not sure what version we are loading.
-  // Seem to work on Windows XP SP3.
-  CreateSubClass(Params, MSFTEDIT_CLASS);
-}
-//---------------------------------------------------------------------------
-void __fastcall TNewRichEdit::CreateWnd()
-{
-  TRichEdit::CreateWnd();
-  SendMessage(Handle, EM_SETEDITSTYLEEX, 0, SES_EX_HANDLEFRIENDLYURL);
-}
-//---------------------------------------------------------------------------
-void __fastcall TNewRichEdit::DestroyWnd()
-{
-  TRichEdit::DestroyWnd();
-
-  if (FLibrary != 0)
-  {
-    FreeLibrary(FLibrary);
-  }
-}
-//---------------------------------------------------------------------------
 static int HideAccelFlag(TControl * Control)
 {
   //ask the top level window about its UI state

+ 0 - 16
source/windows/GUITools.h

@@ -177,22 +177,6 @@ private:
     TControl * HintControl, const UnicodeString & Hint, UnicodeString & ShortHint, UnicodeString & LongHint);
 };
 //---------------------------------------------------------------------------
-// Newer version rich edit that supports "Friendly name hyperlinks" and
-// allows wider range of Unicode characters: https://stackoverflow.com/q/47433656/850848
-class TNewRichEdit : public TRichEdit
-{
-public:
-  virtual __fastcall TNewRichEdit(TComponent * AOwner);
-
-protected:
-  virtual void __fastcall CreateParams(TCreateParams & Params);
-  virtual void __fastcall CreateWnd();
-  virtual void __fastcall DestroyWnd();
-
-private:
-  HINSTANCE FLibrary;
-};
-//---------------------------------------------------------------------------
 // Based on:
 // https://stackoverflow.com/q/6912424/850848
 // https://stackoverflow.com/q/4685863/850848