请问如何在Edit画图? 也就是在非图形控件上面能像在图形控件上用Canvas吗?如果不能那应该如何画? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己写控件啊,重载WMPaint事件,好像是这个,记不清了 继承TEdit控件在里面声明个TCanvas变量试试 楼上的方法估计行不通。你的Canvas和Edit怎么关联啊?应该通过GetDC(Handle)获取句柄,然后再创建MemDC,然后在MemDC上画完后,再BitBlt到Edit的DC上,建议看看VC或者Windows编程(C的)的书,好久没弄,也不太清楚了。 自己写一个控件,从TCustomedit继承重载wndprocprocedure WndProc(var Msg: TMessage); override;procedure TMyedit.WndProc(var Msg: TMessage);var dc:HDC ; rc:TRect;begin case Msg.msg of WM_Paint: begin inherited;//也可以不继承 GetWindowRect(Handle, rc ); OffsetRect( rc, -rc.left, -rc.top ); DC := GetWindowDC( Handle ); //有dc,有rc了,想怎么画就怎么画把 end; else inherited; end;end; 我想用canvas 可是不行呀。 有2种办法,一种就象[dododo(心奕) ( ) 信誉:99 ]说那样继承来做,还有一种就是嫁接,用api getwindowlong函数取得窗口消息处理函数的地址保存起来,然后再用自己的过程替换掉函数用setwindowlong,在你的消息处理过程里再调用一次原始保存的消息处理函数(一定要调用)否则控件不响应任何消息,并判断如果是Wm_paint消息则你再划一个圆.至于2个api函数的用法,delphi带的windows32sdk里写的很详细了 这是那方控件? 求助:delphi 颜色定义的格式! 那位高人知道FOXMAIL是如何储存邮件的,是用的什么数据库? 不是权限的问题,请教 图片读取问题. 关于TreeView的三个问题,请教! 我用Delphi做了一个聊天程序,请问怎样在客户端动态显示其它机器的登录情况? 取ADOQuery的最前几条记录 为什么自定义函数出错 MS office系列用VB还是DELPHI写的? 好像有分歧 外部程序调用 idhttp.post传递的参数中有&字符时,改怎么处理
在里面声明个TCanvas变量试试
重载wndproc
procedure WndProc(var Msg: TMessage); override;procedure TMyedit.WndProc(var Msg: TMessage);
var dc:HDC ;
rc:TRect;
begin
case Msg.msg of
WM_Paint: begin
inherited;//也可以不继承
GetWindowRect(Handle, rc );
OffsetRect( rc, -rc.left, -rc.top );
DC := GetWindowDC( Handle );
//有dc,有rc了,想怎么画就怎么画把
end;
else inherited;
end;
end;