您的位置:首页 > 其它

实现在Picture控件中获取鼠标位置

2012-04-26 18:47 344 查看
在新建MFC工程中加入消息映射,如下:(红色部分为添加)

BEGIN_MESSAGE_MAP(CMymfcDlg, CDialogEx)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_MOUSEMOVE()

ON_WM_LBUTTONDOWN()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_ReadImg, &CMymfcDlg::OnBnClickedReadImg)

ON_BN_CLICKED(IDC_OpenCam, &CMymfcDlg::OnBnClickedOpenCam)

END_MESSAGE_MAP()

在xxDlg.cpp中添加

void CMymfcDlg::OnMouseMove(UINT nFlags, CPoint point)

{

ClientToScreen(&point);//将鼠标坐标转换成屏幕坐标

CRect rect;//定义一个矩形框,包含左上角和右下角可访问成员

GetDlgItem(IDC_ShowImg)->GetClientRect(rect);//获取Picture控件的位置信息,存入rect中

GetDlgItem(IDC_ShowImg)->ClientToScreen(rect);//转换成屏幕坐标

if (rect.PtInRect(point))//判断point是否在rect内部

AfxMessageBox("1");

//CDialog::OnMouseMove(nFlags, point);

}

void CMymfcDlg::OnLButtonDown(UINT nFlags, CPoint point) //鼠标按下

{

ClientToScreen(&point);//将鼠标坐标转换成屏幕坐标

CRect rect;//定义一个矩形框,包含左上角和右下角可访问成员

GetDlgItem(IDC_ShowImg)->GetClientRect(rect);//获取Picture控件的位置信息,存入rect中

GetDlgItem(IDC_ShowImg)->ClientToScreen(rect);//转换成屏幕坐标

if (rect.PtInRect(point))//判断point是否在rect内部

{

AfxMessageBox("Haibara Ai"); //鼠标一按下就会送出消息(以对话框形式)

//m_ptOrigin=m_ptOld=point; //将当前鼠标按下的位置用m_ptOrigin记录

//m_bDraw=TRUE; //将鼠标按下标志置为TURE

}

// CMymfcDlg::OnLButtonDown(nFlags, point); //函数自调用,循环检测。nFlags 表示控制键状态

//(包括 ctrl,shift,鼠标左、中、右共5个键的状态)

//point表示鼠标坐标。(相对于当前窗口而言的坐标)

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: