CEditBox边框是正方形的
我想要椭圆的,背景是浅蓝色的
有点像CSDN网站的<我要提问>这个按钮
请问怎么实现?

解决方案 »

  1.   

    那个叫圆角矩形吧,用SetWindowRgn设置形状,响应WM_CTLCOLOR消息设置背景。
      

  2.   

    int CMyEditBox::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    if (CEdit::OnCreate(lpCreateStruct) == -1)
    return -1;

    // TODO: Add your specialized creation code here
    HRGN hRect=CreateEllipticRgn(0,0,100,100);
    SetWindowRgn(hRect,TRUE); return 0;
    }
    为什么SetWindowRgn没有用呢
      

  3.   


    大概是编辑框还没有创建的原因,你在Drawitem里面试试
      

  4.   

    不对,DrawItem在CEdit不能用的.....
    OnCreate的话,编辑框还没创建,所以没办法调用SetWindowRgn()
      

  5.   

    CMyEditBox就是派生类
    不放在OnCreate里,放在哪啊?
      

  6.   

    用派生类可以实现了,LZ多参考一下其他自绘控件的代码,无非就是控件本身GetWindiwRect(rect),
    GetParent()->ScreenToClient(rect) ,获得控件在父窗口中的位置 然后 SetWindowRgn,MoveWindow() 
    就可以了 ,背静颜色响应WM_CTLCOLOR这个消息就可以了 。
      

  7.   

    1楼,10楼.......SetWindowRgn 椭圆
      

  8.   

    SetWindowRgn
    Button有效
    我的EditBox偏偏没效果
    不知道是少了什么
      

  9.   

    BUTTON的背景色是灰色,所以能显示出圆角矩形,EDIT背景色是白色,圆角矩形把边框吃掉了,看起来就没有效果。你这个需要子类化后自绘,WM_NCCALCSIZE消息里把非客户区域扩大,WM_NCPAINT里在这个区域绘制圆角矩形,客户区仍保留用于输入。