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