这个操作是这样的,点击一下toolbar上的一个键,然后在屏幕上左击取两点,画出这两点之间的连线。
这样的操作执行10多次之后就容易死掉,但是具体在什么时候死掉不定。特别是当移动了视图以后,就更加容易死了。我在画的同时也不停的点击,但是都有预防措施的,设置了flag的,只有画完之后,才可能再画的。
这样的操作执行10多次之后就容易死掉,但是具体在什么时候死掉不定。特别是当移动了视图以后,就更加容易死了。我在画的同时也不停的点击,但是都有预防措施的,设置了flag的,只有画完之后,才可能再画的。
void CGMapView::HandleLeftButtonDown(CMapBaseMessage * pMsg)
{
if(m_bDrawPathTrail) return;//防止重新绘制或不绘制
CMainFrame* pFrame=(CMainFrame*)AfxGetMainWnd(); CDemo_DevStudioDoc* pDoc = (CDemo_DevStudioDoc*)GetDocument();
CPoint ptClient;
CPosition posReal;
ptClient.x = LOWORD(pMsg->lParam);
ptClient.y = HIWORD(pMsg->lParam);
posReal=m_pMapBase->ClientToMap(ptClient);
if(m_isAddStartNode)
{
m_startAndEnd.RemoveAll();
m_startAndEnd.Add(posReal);
m_pClientPt.Add(ptClient);
DrawNode(m_pClientPt.GetAt(0));
m_isAddStartNode=false;
return;
}
if(!m_isAddStartNode&&m_isAddEndNode)
{
m_startAndEnd.Add(posReal);
m_pClientPt.Add(ptClient);
DrawNode(m_pClientPt.GetAt(0));
DrawNode(m_pClientPt.GetAt(1));
m_isAddEndNode=false;
M_SetState(MS_NORMAL,1,m_enumCursor[CURSOR_ARROW]);
} if(m_startAndEnd.GetSize()==2)
{
OnShownodes();
m_bDrawPathTrail=true;
}
}
。
。
。
ReleaseDC(dc);
这样应该就已经释放了把