ATL自绘按钮实现淡入淡出效果 有关问题

ATL自绘按钮实现淡入淡出效果 问题
我想做一个有特效的按钮,如当鼠标按下时使按钮上的图片变淡
LRESULT   OnLButtonDown(UINT   msg,   WPARAM   wParam,   LPARAM   lParam,   BOOL&   bHandled)  
{
bHandled   =   FALSE;
alpha(lParam,   0,   168,   68);
return   0;
}
。。。。。。
LRESULT   CBeepButton::OnDrawItem(UINT   /*uMsg*/,   WPARAM   /*wParam*/,   LPARAM   lParam,   BOOL&   /*bHandled*/)
{
LPDRAWITEMSTRUCT   lpdis   =   (LPDRAWITEMSTRUCT)lParam;
HDC   hdcMem   =   CreateCompatibleDC(lpdis-> hDC);

m_hbmp   =   LoadBitmap(hInst,   MAKEINTRESOURCE(IDB_BITMAP1));
SelectObject(hdcMem,   m_hbmp);
BitBlt(lpdis-> hDC,   0,   0,   168,   68,   hdcMem,   0,   0,   SRCCOPY);

return   0;
}

void   CBeepButton::alpha(LPARAM   lParam,   BYTE   nLevel,   int   width,   int   heigh)
{
LPDRAWITEMSTRUCT   lpdis   =   (LPDRAWITEMSTRUCT)lParam;
HDC   hdc   =   CreateCompatibleDC(lpdis-> hDC);
BLENDFUNCTION   rBlendProps;

rBlendProps.BlendOp   =   AC_SRC_OVER;
rBlendProps.BlendFlags   =   0;
rBlendProps.AlphaFormat   =   0;
rBlendProps.SourceConstantAlpha   =   nLevel;

SelectObject(hdc,   m_hbmp);
AlphaBlend(lpdis-> hDC,   0,   0,   width,   heigh,   hdc,   0,   0,   width,   heigh,   rBlendProps);

Invalidate();
}

为什么没效果?

------解决方案--------------------
atl的控件能用Invalidate()来通知页面更新吗?

我一般用FireViewChange()来通知页面更新的。
------解决方案--------------------
你要自己收到消息.处理消息