主要是想利用CBitmapButton来实现工具栏上的鼠标移动到上面时按钮浮起而鼠标移开时恢复原样。我在对话框中定义了一个CBitmapButton类的按钮,并在对话框类的OnInitDialog()中将它的Rect找了出来,存在m_MouseRect中,代码如下
BOOL CBitBtn::OnInitDialog() 
{
CDialog::OnInitDialog();
         …………
m_bnClickhere.AutoLoad(IDC_CLICKHERE,this);//CBitmapButton类对象
flag=0;
CWnd* pWnd=GetDlgItem(IDC_CLICKHERE);
pWnd->GetClientRect(m_MouseRect);
pWnd->ClientToScreen(&m_MouseRect);

GetClientRect(rect);
ClientToScreen(&rect); m_MouseRect.top-=rect.top+6;
m_MouseRect.left-=rect.left+6; m_MouseRect.right=m_MouseRect.left+60;
m_MouseRect.bottom=m_MouseRect.top+60; ……………
return TRUE; 
}然后在对话框类中重载OnMouseMove()函数,如下所示
void CBitBtn::OnMouseMove(UINT nFlags, CPoint point) 
{
if(m_MouseRect.PtInRect(point))
{
flag=1;
}
if(flag==1)
{
                  //想实现的程序代码
MessageBox("inin");
flag=0;
}
CDialog::OnMouseMove(nFlags, point);
}里面加一个MessageBox()主要是想验证一下程序的正确性,但发现虽然m_MouseRect中包含的位置信息是正确的,但if中的程序并不执行,也就是并不能弹出消息框。我这个位图按钮是48*48大小的,我在OnInitDialog()中将m_MouseRect改成60*60的,也就是说比位图按钮大一圈,在这一圈中是可以响应WM_MOUSEMOVE消息,但一入位图按钮范围之内就不行了,不知道是不是进入位图按钮之内WM_MOUSEMOVE就是由按钮控件来响应了,我本来想定义一个CBitmapButton的派生类,在里面定义OnMouseMove()函数,但是在类向导的添加新类中找不到CBitmapButton这个基类,只有CButton类,手动加我怕出错,呵呵菜鸟嘛。不知道应该怎么样做才让实现我说的这种效果呢,各位大侠请赐教。
    或者有什么别的方式可以实现这种浮动按钮效果?