我将CButton的控件上加载了位图,现在想在鼠标移到此控件上时,更换图片.
我用MouseMove函数:void CTestDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
CRect rect;
m_pic.GetClientRect(&rect);//m_pic为控件
if(rect.PtInRect(point))
{
//更换图片的语句。
}
CDialog::OnMouseMove(nFlags, point);
}运行没有达到预期的效果.why?怎么改?

解决方案 »

  1.   

    从CButton派生一个子类,在其OnMouseMove中处理并替换图片
      

  2.   

    经测试,才知道
    GetClientRect()此函数得到的CRect好象只是控件的大小(CSize),其位置是(0,0).
    所以rect.PtInRect(point)的结果就有问题(响应MouseMove的位置偏移了)上面的老兄说的方法不错,可是也还要用上面的GetClientRect,PtInRect,等函数
    也存在上面的问题.到底如何解决?大家帮帮我.
      

  3.   

    好像需要在逻辑坐标和设备坐标之间变换,就是LPtoDP和DPtoLP函数,试试