本帖最后由 ffvsff 于 2010-08-23 08:53:04 编辑

解决方案 »

  1.   

    InvalidateRect(你的控件窗口句柄,NULL,TRUE)
      

  2.   

    如果想要立刻刷新,而不是等待其它消息处理完毕,则在后面再加一句:UpdateWindow(你的控件窗口句柄)
      

  3.   

    xxd_qd 你的方法可以,但是我的按钮是圆形的,InvalidateRect以后四方的边框就露出来了
      

  4.   

    我知道了,还有InvalidateRgn这个函数,应该就可以了
      

  5.   

    那应该是你的WM_DRAWITEM里写的有问题吧,应该是有些情况没有考虑到
      

  6.   

    最终搞定了,这样就可以了
    RECT rect;
    GetClientRect(GetDlgItem(hWnd,控件ID),&rect);
    HRGN hRgn=CreateEllipticRgnIndirect(&rect);
    InvalidateRgn(GetDlgItem(hWnd,控件ID),hRgn,TRUE);
    DeleteObject(hRgn);
    谢谢xxd_qd的提醒
      

  7.   

    嗯?InvalidateRect会造成四方的边框露出来?那假若你用个别的窗口把你的按钮遮盖一下再拿开,会发生什么?操作系统可不会去调用InvalidateRgn,它只会调用InvalidateRect。