既然这里是讨论VCL开发。那么我们就常识着自己写点吧。我也没有好方法。但是给你提供个方向。看能完善到什么程度了;
TBmpRichEdit=class(TRIchEdit);
private
FCanvas:TControlCanvas;
procedure WMPAINT(var msg:TMessage);message WM_PAINT;
procedure WM_KEYDOWN.....
WM_KEYUP,WM_LBUTTONDOWN,WM_RBUTTONDOWM
//继续处理其他消息。使得在输入字符时我们画的图象不会被破坏
.............
constructor TBMpRichEdit.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FCanvas:=TControlCanvas.Create;
end;
destructor ...//Free the FCanvas;;;;;;;;;;;;
................
procedure TBMpRichEdit.WMPAINT(var Msg:TMessage);
begin
ACanvas.handle:=GetDC(Self.Handle);
with ACanvas do begin
//在这里画吧。
end;
ReleaseDC(Self.Handle,ACanvas.Handle);
end;.
光处理WM——PAINT是不够的。输入字符的时候就给破换了。而已这个样子的话。已经输入的字符被画上去的BMP破坏。呵呵。。你要处理很多相关的消息。必要的时候。可能要把RICHEDIT里的全部字符都TEXTOUT一次。呵呵。。注意效率和效果。
。。。。。。。。。。。。。。。。。。。
// that's all I can do...........Good Luck;
if you have a Good Idea,,,please Email Me:HuQingJiang@2911.net..Thanks a lot