关于重绘edit控件边框问题

zengsheng 2007-01-24 01:39:17
我要实现一个圆角矩形的扁平按钮,边框颜色要能自己控制.
我的想法是把Edit设置成无边框的风格,然后从CEdit继承了一个自己的类,然后改怎么做呢??

网上的方法有两种:

第一种:在Paint里面重绘,我用dc.RoundRect(rect,pt)画了一个圆角矩形,但是在输入内容的时候,光标会覆盖上边框,而且边框无法刷新,会模糊.
    有人说可以用画线的方式来做,但是画线画出一个矩形后,也存在输入内容后要覆盖边框的问题.


第二种:在NcPant里面,用dc.RoundRect(rect,pt),但是画不出来.

    如果用dc.DrawEdge(CRect(0,0,rc.Width(),rc.Height()),EDGE_BUMP ,BF_FLAT|BF_RECT); 同时把edit改成有边框的风格,
    能够画出边框,但是只能是矩形的,而且当改变edit的背景色以后
    边框和背景色之间有点小缝,不能很好的结合在一起.

以上我都用程序测试过,不晓得其他高手是怎么做的??
...全文
1253 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lenux 2007-03-28
  • 打赏
  • 举报
回复
嗬嗬,非常感谢。
我终于也搞定了。
liuqing_886 2007-02-27
  • 打赏
  • 举报
回复
1.定义一个比你的CEdit控制略大一点点的CStatic,把CEdit放在这个CStatic之前
2.这两个控制都设置自绘
3.把CStatic的边框取消,背景填充为你需要的形状和颜色
4.使用SetWindowRgn设置CEdit的形状,填充你需要的背景色
5.进一步调整两个窗体的大小形状,形成需要的边框


这个方法比较好
CharlesPrince 2007-02-03
  • 打赏
  • 举报
回复
这样吧:
1.定义一个比你的CEdit控制略大一点点的CStatic,把CEdit放在这个CStatic之前
2.这两个控制都设置自绘
3.把CStatic的边框取消,背景填充为你需要的形状和颜色
4.使用SetWindowRgn设置CEdit的形状,填充你需要的背景色
5.进一步调整两个窗体的大小形状,形成需要的边框

祝大家新年快乐,工作顺利,奖金多多,如果有问题请告知。
xaocn 2007-02-03
  • 打赏
  • 举报
回复
我也遇到这样的问题,等高手来,
顺便问下,为什么我编辑框里的文字显示不出来,需要鼠标点
zengsheng 2007-01-25
  • 打赏
  • 举报
回复
定上去,等高手
zengsheng 2007-01-24
  • 打赏
  • 举报
回复
高手去哪儿了呢??
zengsheng 2007-01-24
  • 打赏
  • 举报
回复
各位,说明白点啊.
我这样的思路对不对??我的为什么错了??你们怎么解决同一类问题的??

To
shishulv(小记者)
 不可能屏蔽鼠标点击,我的是edit,是要输入文本的.
xdlous 2007-01-24
  • 打赏
  • 举报
回复
http://www.vckbase.net/document/viewdoc/?id=683
shishulv 2007-01-24
  • 打赏
  • 举报
回复
或者屏蔽鼠标点击
shishulv 2007-01-24
  • 打赏
  • 举报
回复
按钮自绘

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧