有一个ToolBar,在其上放置两个ToolButton,将ToolBar的Flat属性设为true,在OnCustomDrawButton事件中有如下代码:TPoint P;
GetCursorPos(&P);if(PtInRect(&(Button->BoundsRect),ToolBar->ScreenToClient(P)))
Sender->Canvas->Brush->Color=clRed;
else
Sender->Canvas->Brush->Color=clBtnFace;Sender->Canvas->FillRect(Button->BoundsRect);DefaultDraw=false;大致就是这样子,目的是当鼠标在ToolBar上移动时,因为Flat属性设为true,会引发OnCustomDrawButton事件,在事件句柄中判断鼠标位置,以此改变按钮颜色,即当鼠标移到按钮上时,用红色填充按钮框,移开时用clBtnFace填充.现在的问题是:当鼠标移动时,两种颜色的交替变换时,总会有闪烁,尤其在配置低的机器上,可以看见有一个白色的填充区域一闪而过,也就是说在黄色和灰色变换时,不是直接变换,中间有一个步骤是用白色填充了一次,从而造成闪烁.我试了许多方法,包括响应WM_ERASEBKGND消息都不能解决,好像画刷的背景色始终是白色.各位有何高见,帮我指点指点,不胜感激