Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WndProc beim Richedit (https://www.delphipraxis.net/110590-wndproc-beim-richedit.html)

Prototypjack 20. Mär 2008 14:12


WndProc beim Richedit
 
Moin,

Ich habe mal wieder ein Problem ;)

Ich versuche die WM_Paste Message bei einem Richedit abzufangen um dann dort etwaige Zeichen (Zeilenumbrüche in diesem Fall und gesonderte Textformatierungen) zu entfernen und den Text dann "per Hand" einzufügen.

Nur habe ich ein Problem: Die WM_PASTE Message wird scheinbar niemals geschickt?

In dem Code kann ich keinen Fehler entdecken und der Hook funktioniert auch (Breakpoints auf alle anderen Messages, die an die alte WndProc gehen, werden erfolgreich weitergeleitet).

Hook:
Delphi-Quellcode:
procedure TFrmAddEntry.NewLang2WndProc(var Message: TMessage);
var
  lHandle: THandle;
  lText: WideString;
begin
  if Message.Msg = WM_PASTE then
  begin
    if IsClipboardFormatAvailable(CF_UNICODETEXT) then
    begin
      OpenClipBoard(redtLanguage2.Handle);
      try
        lHandle := GetClipboardData(CF_UNICODETEXT);
        if lHandle <> 0 then
        begin
          lText := WideString(GlobalLock(lHandle));
          GlobalUnlock(lHandle);

          lText := Tnt_WideStringReplace(lText, #13, '', [rfReplaceAll]);
          lText := Tnt_WideStringReplace(lText, #10, '', [rfReplaceAll]);

          redtLanguage2.SelText := '';
        end;
      finally
        CloseClipBoard;
      end;
    end;
  end
  else
  begin
    OldLang2WndProc(Message);
  end;
end;
Hook-Setzen (im OnCreate der Form)
Delphi-Quellcode:
  OldLang2WndProc := redtLanguage2.WindowProc;
  redtLanguage2.WindowProc := NewLang2WndProc;
Wie kann das sein? Verhält sich das Richedit hier anders?

Weder MSDN noch DP-Suche konnten mir wirklich weiterhelfen.

Danke & Grüße,
Max

toms 20. Mär 2008 14:41

Re: WndProc beim Richedit
 
Hallo,

Schau dir mal meinen Beitrag von hier an.

Prototypjack 20. Mär 2008 18:14

Re: WndProc beim Richedit
 
Moin,

Sehr schön, hat perfekt funktioniert.

Danke! :-D

Grüße,
Max


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz