在MFC 怎么添加鼠标左键保存图像坐标

在MFC 怎么添加鼠标左键保存图像坐标,第1张

首先在视图类(或框架类)中添加一个CPoint m_pt的成员变量,然后在视图类中添加鼠标左击消息处理WM_LBUTTONDOWN即为:

void CMy48View::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

m_pt=point

CView::OnLButtonDown(nFlags, point)

}这样就将鼠标左键的点保存在m_pt中了

你先添加两个事件,鼠标左键按下和鼠标左键抬起。

记录鼠标左键按下和抬起的坐标。

在onDraw中画出。

如果你只想画一条的话,并不出现拖动的动作,下面代码就够了。如果想出现拖动的效果,需要再添加mousemove事件。

代码如下:

OnLButtonDown代码

{

D_point=point

}

OnLButtonUp代码

{

U_point=point

Invalidate()

}

OnDraw代码

{

pDC->MoveTo(D_point.x,D_point.y)

pDC->LineTo(U_point.x,U_point.y)

}

D_point,U_point是定义的两个CPoint变量

按钮控件的左键单击消息是默认的,直接ClassWizard添加即可。

右键消息按钮控件默认是不支持的,需要自己处理。

两种办法:

派生一个自己的按钮类,并绑定指定控件。在自定义按钮类中处理WM_RBUTTONDOWN消息。

在对话框所在类CXXXDlg里面重载 PreTranslateMessage,并在其中这样处理消息:

BOOL CXXXDlg::PreTranslateMessage(MSG *pMsg)

{

// TODO: 在此添加专用代码和/或调用基类

if(pMsg->message==WM_RBUTTONDOWN)       //可以改为任何消息

{

CRect r

::GetWindowRect(GetDlgItem(IDC_00)->GetSafeHwnd(),&r)   //得到button所在的rect

POINT pt

::GetCursorPos(&pt)             //得到鼠标动作的位置

if (PtInRect(&r,pt))        //判断鼠标动作是否在button范围之内     

{

AfxMessageBox(_T("右键单击"))

}

}

return CDialog::PreTranslateMessage(pMsg)

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11566000.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存