
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)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)