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

xiaoxiao2021-02-28  82

原文链接:http://blog.csdn.net/fairypwq/article/details/7473344

在新建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表示鼠标坐标。(相对于当前窗口而言的坐标)   }
转载请注明原文地址: https://www.6miu.com/read-34969.html

最新回复(0)