[]如何让按钮控件接收消息

[求助]怎么让按钮控件接收消息。
  初学WINAPI编程 我想完成一个效果,就是当鼠标移动到按钮上面的时候,让按钮可以有发亮的效果。

  我的思路是这样的,按钮控件也属于一个窗口,所以我想给按钮控件绑定一个回调函数,在这个函数中处理WM_MOUSEMOVE
和 WM_MOUSELEVAE 消息,利用这两个消息来处理发亮效果和取消发亮效果。
  
 但是遇到第一个问题:鼠标移动到按钮上时主窗口是接收不到鼠标消息的,所以我才想到给按钮添加回调函数。我使用SetWindowLong(hButton,GWL_WNDPROC,ButtonProc)这个函数去给按钮添加回调函数,但是一旦使用了这个函数,按钮就消失不见了,就算能绑定回调函数,但是也肯定接收不了消息了。
  请高手帮忙。

  顺便再加一个问题,按钮发亮是怎么弄的?
------解决方案--------------------
本帖最后由 ccrun 于 2010-09-25 15:12:58 编辑
大概例子:
FARPROC OldButtonProc = NULL;

// 按钮窗口的新过程
static LRESULT CALLBACK ButtonNewProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if (uMsg == WM_MOUSEMOVE)
    {
        // 鼠标进入
    }
    else if (uMsg == WM_MOUSELEVAE)
    {
        // 鼠标离开
    }
    return CallWindowProc((FARPROC)OldButtonProc, hwnd, uMsg, wParam, lParam);
}


// 子类化该按钮
OldButtonProc = (FARPROC)SetWindowLong(hButtonWnd, GWL_WNDPROC, (long)ButtonNewProc);