建了一个dialog based 程序bottommove,实现鼠标在按钮上时按钮逃跑
在cbottommove类中增加一个m_areaRect(CRect型)表示按钮的坐标区域,m_wholeRect(CRect型)表示对话框的坐标区域
在cbottommove::oninitdialog()函数中增加代码如下:
GetDlgItem(IDC_BUTTON)->GetWindowRect(&m_areaRect);//取得按钮的矩形区域
GetDlgItem(IDD_BUTTONMOVE_DIALOG)->GetWindowRect(&m_wholeRect);//取得程序窗口的举行区域
ScreenToClient(&m_areaRect);//屏幕区域转客户区
ScreenToClient(&m_wholeRect);//屏幕区域转客户区
srand(GetTickCount());//设置随机数种子,用以改变按钮的位置
在void CButtonmoveDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
if(point.x > m_areaRect.left && point.x < m_areaRect.right && point.y > m_areaRect.top && point.y < m_areaRect.bottom)
{
int xoff = AverageRandom(m_wholeRect.left, m_wholeRect.right);
int yoff = AverageRandom(m_wholeRect.top, m_wholeRect.bottom);
m_areaRect.left += xoff;
m_areaRect.right += xoff;
m_areaRect.top += yoff;
m_areaRect.bottom += yoff;
GetDlgItem(IDC_BUTTON)->MoveWindow(m_areaRect);
}
CDialog::OnMouseMove(nFlags, point);
}double AverageRandom(double min,double max)//该函数用以取得min和max之间的随机数
{
    int minInteger = (int)(min*10000);
    int maxInteger = (int)(max*10000);
    int randInteger = rand()*rand();
    int diffInteger = maxInteger - minInteger;
    int resultInteger = randInteger % diffInteger + minInteger;
    return resultInteger/10000.0;
}本来菜鸟请教大虾们哪出错了该怎么改