首先展示一下效果!当鼠标移动到图片上绿色圆圈中时,鼠标由箭头变成手的形状!当鼠标点击某个圆圈时。该圆圈背景变成白色!
代码:
void CMenuBodyPosition::LoadImageFile(int iIndex)
{
// 动态加载图片到Picture控件
CBitmap bitmap;
if (iIndex==1)
bitmap.LoadBitmap(IDB_BITMAP_BODY1); //加载图片,IDB_BITMAP_Testing为你要加入图片的ID
else if (iIndex==2)
bitmap.LoadBitmap(IDB_BITMAP_BODY2);
return;
}
void CMenuBodyPosition::OnMouseMove(UINT nFlags, CPoint point)
{
if ((point.x>=592 && point.x<=689) && (point.y>=243 && point.y<=296))
SetCursor(LoadCursor(NULL,IDC_HAND));
else if ((point.x>=546 && point.x<=599) && (point.y>=314 && point.y<=411))
SetCursor(LoadCursor(NULL,IDC_HAND));
CDialog::OnMouseMove(nFlags, point);
}
void CMenuBodyPosition::OnLButtonDown(UINT nFlags, CPoint point)
{
if ((point.x>=592 && point.x<=689) && (point.y>=243 && point.y<=296))
LoadImageFile(1);
else if ((point.x>=546 && point.x<=599) && (point.y>=314 && point.y<=411))
LoadImageFile(2);
CDialog::OnLButtonDown(nFlags, point);
}
BOOL CMenuBodyPosition::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message==WM_LBUTTONDOWN && GetDlgItem(IDC_PICTURE_BODY)->GetSafeHwnd()==pMsg->hwnd)
{
//在此传递点击部位在对话框中的坐标
OnLButtonDown(MK_LBUTTON,pMsg->pt);
}
if(WM_MOUSEMOVE == pMsg-> message)
{
if(pMsg-> hwnd == GetDlgItem(IDC_PICTURE_BODY)-> GetSafeHwnd())
{
OnMouseMove(NULL,pMsg->pt);
}
}
return CDialog::PreTranslateMessage(pMsg);
}
这里说明一下:
OnMouseMove(nFAges,point);
OnLButtonDown(nFages,point);
point:鼠标的X,Y坐标:该坐标为 鼠标距离截获该消息的窗口左上角的位置 是一个相对位置而不是在屏幕像素上的绝对位置。