Thema: Delphi WndProc beim Richedit

Einzelnen Beitrag anzeigen

Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#1

WndProc beim Richedit

  Alt 20. Mär 2008, 14:12
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
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat