如何获取鼠标点击所在点的坐标?
具体情况是我要利用ONLBUTTONDOWN和ONMOUSEMOVE画一条折线,并计算这条折线的函数表达式。所以在点击鼠标的时候,需要记录每一个点击左键时候的点的坐标,放进一个动态数组里。下面是我的代码,哪个地方出错了?[code=C/C++][/code]
void CWaveTestView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// CString sMousePos;
//sMousePos.Format("x=%d,y=%d",point.x,point.y);
// GetParent()->GetDescendantWindow(AFX_IDW_STATUS_BAR)->SetWindowText(sMousePos);
if (m_OnDrawLine == TRUE)
{
int nPointCount = 0;
CPoint *pDrawPoint = new CPoint[];
if(nFlags==MK_LBUTTON) //按下左键
{
CPen pen,cpen;
pen.CreatePen(PS_SOLID,4,RGB(0,0,0));
cpen.CreatePen(PS_SOLID,2,RGB(0,0,255));
m_PtOld = point;//鼠标当前位置相对下一次移动的位置是“旧位置”
CClientDC dc(this);
dc.SetROP2(R2_NOT);
dc.SelectObject(&pen);
dc.MoveTo(m_PtStart);
dc.LineTo(m_PtOld);
dc.MoveTo(m_PtStart);
dc.LineTo(point);
nPointCount++;
}
for (int i=0;i<nPointCount;i++)
{
pDrawPoint[i] = point;
}
}
CView::OnMouseMove(nFlags, point);
}
另外,上面有段被注释掉的代码,是想显示鼠标当前位置的坐标,但是在运行的时候,会提示“UNHANDLED EXCEPTION IN xxxx.exe access violation”,请帮忙一并解决,我新人,分不多。谢谢!
[解决办法]
void CTrailMousePosDlg::OnMouseMove(UINT nFlags, CPoint point)
{
//获得鼠标当前位置
m_strX.Format("%d",point.x);
m_strY.Format("%d",point.y);
UpdateData(FALSE);
CDialog::OnMouseMove(nFlags, point);
}
[解决办法]
m_PtStart值呢?
在说了,你跟进去看看啊,值是多少
[解决办法]
在点击事件中记录坐标并画线。
[解决办法]
下面两个都应该是类的成员变量,否则没办法保存每次点击的坐标
int nPointCount;
CPoint *pDrawPoint;
而且不能用CPoint *pDrawPoint;
用个CList比较合适,每点击一次在list中增加一个point对象
CList<CPoint,CPoint> m_Points;
[解决办法]
CPoint *pDrawPoint = new CPoint[];// 多少?
知道:nPointCount 后 再new:
CPoint *pDrawPoint = new CPoint[nPointCount];
[解决办法]
CPoint *pDrawPoint = new CPoint[];
这句话问题很大。
不确定大小的话,
1.可以先申请个很大的空间
2.用容器Vector之类的
[解决办法]
稍微整理一下
class CWaveTestDoc : public CDocument{public: CArray< POINT, const POINT& >PointArray; POINT PointLastActive, PointLast; ……