亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? setmap.cpp

?? 尋找最短路系統vc實現
?? CPP
字號:
// SetMap.cpp : implementation file
//

#include "stdafx.h"
#include "找最短路系統.h"
#include "SetMap.h"
#include "Distance.h"
#include "SaveMap.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define maxdist 1000000
/////////////////////////////////////////////////////////////////////////////
// CSetMap dialog


CSetMap::CSetMap(CWnd* pParent /*=NULL*/)
	: CDialog(CSetMap::IDD, pParent)
{
	bSetPoint=false;
	bSetDistance=false;
	curColor=RGB(255,0,0);
	mapRect=CRect(0,0,0,0);
	line_start=false;
	bmodify_distance=false;
	bclear_point=bclear_line=false;
	//{{AFX_DATA_INIT(CSetMap)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CSetMap::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetMap)
	DDX_Control(pDX, IDC_CLEAR_LINE, m_clear_line);
	DDX_Control(pDX, IDC_CLEAR_POINT, m_clear_point);
	DDX_Control(pDX, IDC_MODIFY_DISTANCE, m_modify_distance);
	DDX_Control(pDX, IDC_INPUT_POINT, m_input_point);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetMap, CDialog)
	//{{AFX_MSG_MAP(CSetMap)
	ON_BN_CLICKED(IDC_OKK, OnOkk)
	ON_BN_CLICKED(IDC_CANCELL, OnCancell)
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_BN_CLICKED(IDC_INPUT_POINT, OnInputPoint)
	ON_BN_CLICKED(IDC_INPUT_DISTANCE, OnInputDistance)
	ON_WM_CREATE()
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_MODIFY_DISTANCE, OnModifyDistance)

	ON_BN_CLICKED(IDC_CLEAR_POINT, OnClearPoint)
	ON_BN_CLICKED(IDC_CLEAR_LINE, OnClearLine)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetMap message handlers

void CSetMap::OnOkk() 
{
	// TODO: Add your control notification handler code here
	CSaveMap saveDlg;
	if(saveDlg.DoModal()==IDOK){
			CFileDialog mdlg(1,"*.txt");
			mdlg.DoModal();
			int i,len=mdlg.GetPathName().GetLength();

			CString tempstr;
			char *filename;
			filename=new char[len+1];
			for(i=0;i<len;i++){
				filename[i]=mdlg.GetPathName().GetAt(i);
			}
			filename[len]=0;

			CFile infile;
			infile.Open(filename,1);
			if(!infile)	MessageBox("open failed");
			infile.Write(&point_nums,sizeof(int));
			infile.Write(&line_nums,sizeof(int));
			for(i=0;i<point_nums;i++){
				infile.Write(&points[i].x,sizeof(int));
				infile.Write(&points[i].y,sizeof(int));
			}
			for(i=0;i<point_nums;i++){
				for(int j=0;j<point_nums;j++){
					infile.Write(&distances[i][j],sizeof(double));
				}
			}
	}
	OnOK();
}

void CSetMap::OnCancell() 
{
	// TODO: Add your control notification handler code here
	OnCancel();
}

void CSetMap::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnMouseMove(nFlags, point);
}

void CSetMap::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(bSetDistance){	
		line_start=true;
		startp=GetPoint(point);
	
	}else if(bmodify_distance){
		double lmaxdis,tempdis;
		int u,v;
		u=v=-1;
		lmaxdis=maxdist;
		for(int  i=0;i<100;i++){
			for(int j=i+1;j<100;j++){
				if(distances[i][j]!=maxdist){
					int midx=(points[i].x-points[j].x)/2+points[j].x;
					int midy=(points[i].y-points[j].y)/2+points[j].y;
					tempdis=(point.x-midx)*(point.x-midx)+
						(point.y-midy)*(point.y-midy);
					if(tempdis<lmaxdis){
						lmaxdis=tempdis;
						u=i;v=j;
					}
				}
			}
		}
		if(u!=-1){
			CDistance distanceDlg;
			distanceDlg.DoModal();
			if(distanceDlg.m_distance){
				distances[u][v]=
				distances[v][u]=
				    distanceDlg.m_distance;
			}
			OnPaint();
		}
	}
	
	CDialog::OnLButtonDown(nFlags, point);
}

void CSetMap::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CClientDC dc(this);
	CBrush *mBrush,*oldBrush;
	if(bSetPoint){
		if(point.x>map.right-map.left||point.y>map.bottom-map.top||
			point.x<10||point.y<10)return ;
		points[point_nums++]=point;
		mBrush=new CBrush(curColor);
		oldBrush=dc.SelectObject(mBrush);
		dc.Ellipse(point.x-3,point.y-3,point.x+3,point.y+3);
		dc.SelectObject(oldBrush);
		delete mBrush;		
	}else if(bSetDistance){
		if(line_start){
			endp=GetPoint(point);		
			if((points[startp].x)!=(points[endp].x)||(points[startp].y)!=(points[endp].y)){
				CPen *mpen,*oldpen;
				mpen=new CPen(PS_SOLID,1,RGB(0,0,255));
				CClientDC dc(this);
				oldpen=dc.SelectObject(mpen);
				dc.MoveTo(points[startp].x,points[startp].y);
				dc.LineTo(points[endp].x,points[endp].y);
				dc.SelectObject(oldpen);
				delete mpen;
				CDistance distanceDlg;
				distanceDlg.DoModal();
				if(distanceDlg.m_distance){
					distances[endp][startp]=
						distances[startp][endp]=
						    distanceDlg.m_distance;
					line_nums++;
				}
				this->UpdateData(false);
			
			}
			line_start=false;
			endp=startp=0;
			UpdateData(false);
			
		}
	}
	CDialog::OnLButtonUp(nFlags, point);
	OnPaint();
}

void CSetMap::OnInputPoint() 
{
	// TODO: Add your control notification handler code here
	if(bSetPoint){
        bSetPoint=false;
		bSetDistance=true;
		m_input_point.SetCheck(0);
	}else{
		bSetPoint=true;
		bSetDistance=false;
		m_input_point.SetCheck(1);
	}
}

void CSetMap::OnInputDistance() 
{
	// TODO: Add your control notification handler code here
	if(bSetDistance){        
		bSetPoint=true;
		bSetDistance=false;
		m_input_point.SetCheck(1);
	}else{
		bSetPoint=false;
		bSetDistance=true;
		m_input_point.SetCheck(0);
	}
}

int CSetMap::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here

	return 0;
}

BOOL CSetMap::OnInitDialog() 
{
	CDialog::OnInitDialog();	
	// TODO: Add extra initialization here

	m_input_point.SetCheck(1);
	bSetPoint=true;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

int CSetMap::GetPoint(POINT p)
{
   int i,index=0;
   double d=0,min=10000000;
   for(i=0;i<point_nums;i++){
		d=(p.x-points[i].x)*(p.x-points[i].x)+
				(p.y-points[i].y)*(p.y-points[i].y);
		if(d<min){
			index=i;
			min=d;
		}
   }
   return index;
}
void CSetMap::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CString strdis;

	// TODO: Add your message handler code here
//	CClientDC dc(this);				
		CBrush *mbrush=new CBrush(RGB(0,128,0)),*oldbrush;
		oldbrush=dc.SelectObject(mbrush);
		dc.Rectangle(10,10,map.right-map.left,map.bottom-map.top);		
		dc.SelectObject(oldbrush);
		delete mbrush;

		mbrush=new CBrush(RGB(255,0,0));
		oldbrush=dc.SelectObject(mbrush);
		for(int i=0;i<point_nums;i++){
			dc.Ellipse(points[i].x-3,points[i].y-3,points[i].x+3,points[i].y+3);
		}
		dc.SelectObject(oldbrush);
		delete mbrush;
		CPen *mpen=new CPen(PS_SOLID,1,RGB(0,0,255)),*oldpen;
		oldpen=dc.SelectObject(mpen);
		for(i=0;i<100;i++){
			for(int j=i+1;j<100;j++){
				if(distances[i][j]!=maxdist){
					dc.MoveTo(points[i].x,points[i].y);
					dc.LineTo(points[j].x,points[j].y);
					int midx=(points[i].x-points[j].x)/2+points[j].x;
					int midy=(points[i].y-points[j].y)/2+points[j].y;
					strdis.Format("%.2f",distances[i][j]);
					dc.SetBkColor(RGB(0,128,0));
					dc.SetTextColor(RGB(255,128,0));
					dc.TextOut(midx-2,midy-2,strdis);
				}
			}
		}
		dc.SelectObject(oldpen);
		delete mpen;
		UpdateData(true);
	// Do not call CDialog::OnPaint() for painting messages
}

void CSetMap::OnModifyDistance() 
{
	// TODO: Add your control notification handler code here
	if(!bmodify_distance){
		ResetAll();
		bmodify_distance=true;
		m_modify_distance.SetWindowText("結束修改");
	}else{
	   ResetAll();
	}
	UpdateData(false);

}

void CSetMap::OnClearPoint() 
{
	// TODO: Add your control notification handler code here
	if(!bclear_point){
		ResetAll();
		bclear_point=true;
		m_clear_point.SetWindowText("結束清除");
	}else{
	   ResetAll();
	}
	UpdateData(false);
}

void CSetMap::OnClearLine() 
{
	// TODO: Add your control notification handler code here
	if(!bclear_line){
		ResetAll();
		bclear_line=true;
		m_clear_line.SetWindowText("結束清除");
	}else{
	   ResetAll();
	}
	UpdateData(false);
}

void CSetMap::ResetAll()
{
	bSetPoint=false;
	bSetDistance=false;	
	line_start=false;
	bmodify_distance=false;
	bclear_point=false;
	bclear_line=false;
	m_modify_distance.SetWindowText("修改距離");

	m_clear_point.SetWindowText("清除點");
	m_clear_line.SetWindowText("清除邊");
   
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级专区免费大片| 亚洲国产精品久久久久婷婷884| 中文字幕电影一区| 亚洲国产美女搞黄色| 国产成人丝袜美腿| 欧美妇女性影城| 综合中文字幕亚洲| 黄色日韩网站视频| 91精品综合久久久久久| 亚洲少妇最新在线视频| 麻豆国产欧美一区二区三区| 欧美性大战久久久久久久 | 中文字幕欧美三区| 日韩中文字幕av电影| 色激情天天射综合网| 久久精品一级爱片| 久久成人免费电影| 欧美精品一二三区| 亚洲一区日韩精品中文字幕| 99视频在线精品| 国产精品蜜臀在线观看| 高清免费成人av| 久久天堂av综合合色蜜桃网| 毛片av一区二区| 制服视频三区第一页精品| 亚洲国产日韩av| 在线免费观看一区| 一区二区国产盗摄色噜噜| 97se亚洲国产综合自在线不卡| 国产欧美日韩中文久久| 国产一区二区视频在线| 久久亚洲精精品中文字幕早川悠里| 蜜桃视频在线观看一区二区| 欧美一级二级三级乱码| 美女任你摸久久| 欧美tk—视频vk| 国产一区二区三区免费| 久久免费美女视频| 成人午夜视频在线| 国产精品天干天干在观线| av网站一区二区三区| 日韩一区欧美小说| 在线精品观看国产| 午夜视黄欧洲亚洲| 日韩免费看的电影| 国产一区二区在线看| 中文字幕第一区第二区| 91玉足脚交白嫩脚丫在线播放| 日韩美女精品在线| 欧美伦理视频网站| 九九**精品视频免费播放| 久久久噜噜噜久久中文字幕色伊伊| 国产伦精一区二区三区| 亚洲三级在线观看| 欧美日韩国产一级| 狠狠色丁香婷婷综合久久片| 国产精品美女久久久久久久久 | 日本韩国欧美一区二区三区| 亚洲国产精品久久久久秋霞影院| 欧美久久久久免费| 国产一区二区精品在线观看| 中文字幕一区二区三区乱码在线| 在线看日韩精品电影| 免播放器亚洲一区| 久久这里只有精品首页| 91免费观看在线| 美女任你摸久久| 亚洲视频在线一区| 欧美一区二区精美| 成人av免费在线播放| 午夜一区二区三区在线观看| 久久久99精品免费观看| 在线免费亚洲电影| 国产精品18久久久久久vr| 亚洲精品伦理在线| 2024国产精品| 欧美片网站yy| 成人国产电影网| 久久综合综合久久综合| 亚洲日本韩国一区| 欧美精品一区二区三区四区| 91福利视频在线| 国产精品综合视频| 日韩国产欧美一区二区三区| 国产精品毛片a∨一区二区三区| 在线综合视频播放| 95精品视频在线| 国产精品羞羞答答xxdd| 五月天激情综合| 亚洲欧美色综合| 久久久精品日韩欧美| 欧美一区二区高清| 欧美午夜精品久久久久久超碰| 春色校园综合激情亚洲| 麻豆传媒一区二区三区| 爽好多水快深点欧美视频| 亚洲色图欧洲色图| 中文字幕一区二区三区四区不卡 | 色一区在线观看| 国产福利91精品一区| 九色porny丨国产精品| 亚洲成a人片综合在线| 亚洲美女视频在线| 成人欧美一区二区三区黑人麻豆| 久久久久久久久免费| 日韩免费一区二区| 精品国产自在久精品国产| 欧美日韩亚州综合| 欧美日韩免费一区二区三区| 一本到不卡精品视频在线观看| 99久久亚洲一区二区三区青草| 国产一二三精品| 国产成人欧美日韩在线电影| 九色porny丨国产精品| 蜜臀av性久久久久蜜臀aⅴ| 日韩制服丝袜av| 日韩电影免费一区| 男人的天堂亚洲一区| 麻豆精品一区二区综合av| 日韩av二区在线播放| 蜜桃传媒麻豆第一区在线观看| 日韩av中文在线观看| 麻豆精品国产91久久久久久| 精品无码三级在线观看视频| 久久er99热精品一区二区| 国内精品国产三级国产a久久| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品综合av一区二区国产馆| 成人性生交大片免费| 99久久99久久综合| 在线亚洲一区二区| 欧美精品久久99| 精品久久久久久综合日本欧美| 精品粉嫩aⅴ一区二区三区四区| 2欧美一区二区三区在线观看视频| 久久久久久毛片| 中文字幕视频一区二区三区久| 亚洲精品成a人| 欧美aaa在线| 丁香五精品蜜臀久久久久99网站| 99久久国产综合色|国产精品| 欧美色网一区二区| 91麻豆精品国产自产在线观看一区 | 欧美国产在线观看| 亚洲欧洲一区二区在线播放| 亚洲精品国久久99热| 男人的天堂亚洲一区| 岛国一区二区在线观看| 日本国产一区二区| 日韩欧美123| 亚洲欧洲av色图| 蜜臀av在线播放一区二区三区| 国产成人精品免费一区二区| 91久久香蕉国产日韩欧美9色| 在线成人免费视频| 国产欧美日韩一区二区三区在线观看| 亚洲啪啪综合av一区二区三区| 三级久久三级久久久| 懂色一区二区三区免费观看| 欧美日韩一区不卡| 国产精品视频观看| 麻豆精品在线看| 91九色02白丝porn| 久久影院电视剧免费观看| 亚洲精品视频在线| 国产精品1区2区3区| 欧美精品 日韩| 国产精品伦一区二区三级视频| 日韩成人精品在线| 一本一本大道香蕉久在线精品 | 国产精品欧美一级免费| 丝袜诱惑亚洲看片| 91老师片黄在线观看| 国产偷国产偷精品高清尤物 | 在线成人av影院| 亚洲视频 欧洲视频| 国产精品亚洲一区二区三区在线| 欧美网站大全在线观看| 国产精品另类一区| 国产伦精品一区二区三区免费 | 欧美极品aⅴ影院| 免费不卡在线观看| 欧美日韩情趣电影| 亚洲免费在线电影| 成人黄色小视频在线观看| 日韩欧美的一区| 日韩国产精品久久| 欧美三级电影在线看| 亚洲在线视频网站| 91丨porny丨中文| 国产精品视频免费看| 国产成人精品三级| 国产欧美日本一区二区三区| 麻豆成人91精品二区三区| 制服.丝袜.亚洲.中文.综合| 亚洲成年人网站在线观看| 欧美性受xxxx黑人xyx性爽| 伊人一区二区三区| 日本韩国视频一区二区| 亚洲精品欧美激情|