myextedittool.cpp

来自「地理信息系统(GIS)相关.批量自动旋转符号功能.」· C++ 代码 · 共 106 行

CPP
106
字号
#include "StdAfx.h"
#include "MyExtEditTool.h"

//==============================================//
//-----------------"删除点"的Tool---------------//
//==============================================//
CDelGroupPointTool::CDelGroupPointTool(BASEEDVIEW pEditView) : BaseGisTool(pEditView)
{
	m_pMyEditView = (CMyEditView *)pEditView;
	ASSERT(m_pMyEditView);

	//直接利用"选择"操作的结果
	DoDelGroupPoints();
}

CDelGroupPointTool::~CDelGroupPointTool()
{
}

int CDelGroupPointTool::LButtonDown (UINT nFlags, CPoint point)
{
	//选择点实体
	if (m_pMyEditView->SelectPnt(WM_LBUTTONDOWN,nFlags,point)==1)
		DoDelGroupPoints();	
	
	return 1;
}

int CDelGroupPointTool::LButtonUp (UINT nFlags, CPoint point)
{
	//选择点实体
	if (m_pMyEditView->SelectPnt(WM_LBUTTONUP,nFlags,point)==1)
		DoDelGroupPoints();	
	
	return 1;
}

int CDelGroupPointTool::RButtonUp (UINT nFlags, CPoint point)
{
	//选择点实体
	if (m_pMyEditView->SelectPnt(WM_RBUTTONUP,nFlags,point)==1)
		DoDelGroupPoints();	
	
	return 0;
}

int CDelGroupPointTool::MouseMove (UINT nFlags, CPoint point)
{
	//选择点实体
	m_pMyEditView->SelectPnt(WM_MOUSEMOVE,nFlags,point);
	
	return 0;
}

int CDelGroupPointTool::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	return 1;
}

void CDelGroupPointTool::DrawGraphics(MyDC mdc)
{
	
}

void CDelGroupPointTool::Reset()
{
	m_pMyEditView->ClearPool();

	//关闪 
	m_pMyEditView->_StopFlash(-1);
}

//删除点实体
void CDelGroupPointTool::DoDelGroupPoints()
{
	SELECTGRAPH *selgph=NULL;
	long lNum,li;
	MyDC mdc;

	selgph=m_pMyEditView->GetPool();
	lNum=m_pMyEditView->GetPoolNum();

	if (lNum<1)
		return;

	//将元素的DELETE_ACTION操作压栈
	m_pMyEditView->UndoTool->PushSelGraphics(selgph,lNum,DELETE_ACTION);
	mdc=m_pMyEditView->_GetMyDC();

    for(li=0;li<lNum;li++)
	{
		if (selgph[li].type!=PNT)
			continue;

		if (!db_LockPntForUpdate(selgph[li].ai,selgph[li].elmi))
			continue;

		_DispPnt(mdc,selgph[li].ai,selgph[li].elmi,m_pMyEditView->DeleteCollor);
		_DelPnt(selgph[li].ai,selgph[li].elmi);
	}

	m_pMyEditView->_DeleteMyDC(mdc);
	//清空缓冲区内容
	m_pMyEditView->ClearPool();
}			

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?