⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvenus.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	m_pResultDlg->SetFocus();
	m_bResultDisplayed = true;
}

/*************************************************************************
 *
 * OnDisCurGraph()
 *
 * 功  能: 显示当前图形
 *
 * 参  数: 无
 *
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::OnDisCurGraph() 
{
	CStdioFile file;
	CString    str;
	HANDLE     hSearch; 
	WIN32_FIND_DATA FileData; 

//	m_btSaveType    = 0x03;
	if(m_btProjectType == 0x00)
	{
		Beep(650, 50);
		AfxMessageBox("请选择工程!", MB_ICONINFORMATION);
		return;
	}
	
	str = GetMyAppPath();
	str += "\\tempfile.gra";
	hSearch = FindFirstFile(str, &FileData); 
	if (hSearch == INVALID_HANDLE_VALUE) 
	{ 
		AfxMessageBox("图形文件不存在!");
		return;
	} 

	CStringList pGraphData;
	if(!ReadGraphData(&pGraphData, TRUE))
		return;

	m_pMainDlg->ShowWindow(SW_HIDE);
	m_pResultDlg->ShowWindow(SW_HIDE);

	DisplayGraph(&pGraphData);
	pGraphData.RemoveAll();

}

/*************************************************************************
 *
 * ReadGraphData()
 *
 * 功  能: 读图形数据文件
 *
 * 参  数: CStringList* pGraphData: 存放图形数据链表
 *         
 * 返回值: 无
 *
 *************************************************************************/
BOOL CCVenusApp::ReadGraphData(CStringList* pGraphData, BOOL bCur) 
{
	CStdioFile   file;
	CString      FileStr, strFileName;
	CString		strFileExt;

//	if(pGraphData == NULL) return false;
	if(!bCur)
	{
		if(m_cBaseFileLeft.IsEmpty())
		{	
			strFileName = GetOpenFileName(2);
			if(strFileName.IsEmpty()) return false;
		}
		else
		{
			GetExtName(2, &strFileExt);
			strFileName = m_cBaseFileLeft + '.' + strFileExt;
		}
	}
	else
	{
		strFileName = GetMyAppPath();
		strFileName += "\\tempfile.gra";
	}
	
	HANDLE      hSearch; 
	WIN32_FIND_DATA FileData; 
	
	hSearch = FindFirstFile(strFileName, &FileData); 
	if (hSearch == INVALID_HANDLE_VALUE) 
	{ 
		AfxMessageBox(_T("图形文件不存在!"), MB_ICONINFORMATION);
		return false;
	}
	if(!file.Open(strFileName, CFile::modeRead) )
	{ 
		AfxMessageBox(_T("无法打开图形文件!"), MB_ICONINFORMATION);
		return false;
	}
	
	while(TRUE)
	{
		try
		{
			if( file.ReadString(FileStr) )
			{
				if(!FileStr.IsEmpty())
					pGraphData->AddTail(FileStr);
			}
			else
			{// 到文件尾
				break;
			}
		}
		catch (CFileException exception1)
		{
			Beep(650, 50);
			AfxMessageBox("读文件出错!", MB_ICONINFORMATION);
			return false;
		}
	}
	m_pGraphDlg->m_cGraphFileName = strFileName;
	if(!bCur)
	{
		m_cGraFilePath = strFileName;
	}
	else
		m_cGraFilePath.Empty();

	file.Close();
	return true;
}

/*************************************************************************
 *
 * SetGraphPos()
 *
 * 功  能: 设置图形对话框位置
 *
 * 参  数: 无
 *         
 * 返回值: 无
 *
 *************************************************************************/
/*
void CCVenusApp::SetGraphPos() 
{
	CRect rc, wkSpaceRc, toolRc, statusRc;

	m_pGraphDlg->SetParent(m_pMainWnd);
	((CMainFrame*)m_pMainWnd)->m_wndWorkSpace.GetClientRect(&wkSpaceRc);
	((CMainFrame*)m_pMainWnd)->m_wndToolBar.GetClientRect(&toolRc);
	((CMainFrame*)m_pMainWnd)->m_wndStatusBar.GetClientRect(&statusRc);
	GetClientRect(m_pMainWnd->m_hWnd, &rc);
	m_pGraphDlg->SetWindowPos(NULL, 
		                      rc.left + wkSpaceRc.Width() + 14, 
							  rc.top + toolRc.Height() + 4, 
		                      rc.Width() - wkSpaceRc.Width() - 16, 
							  rc.Height() - toolRc.Height() - 6 - statusRc.Height(), 
							  NULL);
}
*/

/*************************************************************************
 *
 * AnalyzeGraphStr()
 *
 * 功  能: 分析一行图形数据字符串
 *
 * 参  数: CString pGraphData: 存放图形数据链表
 *         int iRow: 行数
 *         BOOL bLineEnd: 线条数据是否结束
 *         
 * 返回值: 无
 *
 *************************************************************************/
sAnalyzeStr* CCVenusApp::AnalyzeGraphStr(CString GraphStr, int iRow, BOOL bLineEnd) 
{
	sAnalyzeStr  *pAnalyzeStr;
	char         ch;
	CString      str1, str2;

	if(GraphStr.IsEmpty()) return NULL;

	pAnalyzeStr = new sAnalyzeStr;
	int len = GraphStr.GetLength();

	ch = GraphStr.GetAt(0);

	if(iRow == 10)
	{// 坐标方式
		pAnalyzeStr->iType  = 0x02;
		if(len < 2)
			pAnalyzeStr->sData1.Insert(0, "1"); 
		else
			pAnalyzeStr->sData1.Insert(0, GraphStr.GetAt(1)); 
		return pAnalyzeStr;
	}

	if(iRow < 10)
	{// 标题或描述文字
		pAnalyzeStr->iType  = 0x01;
		pAnalyzeStr->sData1 = GraphStr;
		return pAnalyzeStr;
	}

	if(iRow > 10 && ch != ' ' && ch != '-')
	{// 注释
		pAnalyzeStr->iType =0x06;
		pAnalyzeStr->sData1 = GraphStr;
		return pAnalyzeStr;
	}

//	if(iRow > 10 && ch != ' ' && ch == '-')
	if(iRow > 10 && ch == '-')
	{
		GetGraphDataStr(GraphStr, str1, str2);
		if( !str1.Compare("-1") && !str2.Compare("-1") )
		{// 线条数据结束
			pAnalyzeStr->iType =0x04;
			return pAnalyzeStr;
		}
		else if( !str1.Compare("-10") && !str2.Compare("-10") )
		{// 图形数据结束
			pAnalyzeStr->iType =0x05;
			return pAnalyzeStr;
		}

		return pAnalyzeStr;
	}

	if(bLineEnd)
	{// 线条颜色
		GetGraphDataStr(GraphStr, str1, str2);
		pAnalyzeStr->iType  = 0x07;
		pAnalyzeStr->sData1 = str1;
		pAnalyzeStr->sData2 = str2;
		return pAnalyzeStr;
	}

	if(iRow > 10 && ch == ' ')
	{// 数据
		GetGraphDataStr(GraphStr, str1, str2);
		{
			pAnalyzeStr->iType  = 0x03;
			pAnalyzeStr->sData1 = str1;
			pAnalyzeStr->sData2 = str2;
			return pAnalyzeStr;
		}
	}

	return NULL;
}

/*************************************************************************
 *
 * GetGraphDataStr()
 *
 * 功  能: 取得图形数据字符串
 *
 * 参  数: CString dest:  目标字符串
 *         CString &str1: 结果字符串1
 *         CString &str2: 结果字符串2
 *         
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::GetGraphDataStr(CString dest, CString &str1, CString &str2) 
{
	char ch;
	BOOL bFirst = TRUE;

	for(int i = 0; i < dest.GetLength(); i++)
	{
		ch = dest.GetAt(i);

		if(i == 0 && ch == ' ') continue;

		if(ch != ' ' && bFirst && ch != '\t')
		{
			str1.Insert(str1.GetLength(), ch);
		}
		else
		{
			bFirst = FALSE;
		}

		if(ch != ' ' && !bFirst && ch != '\n' && ch != '\t')
		{
			str2.Insert(str2.GetLength(), ch);
		}
	}	
}

/*************************************************************************
 *
 * OnDispGraph1()
 *
 * 功  能: 显示图形
 *
 * 参  数: 无
 *         
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::OnDispGraph1() 
{
	if(m_btProjectType == 0x00)
	{
		Beep(650, 50);
		AfxMessageBox("请选择工程!", MB_ICONINFORMATION);
		return;
	}

//	m_btSaveType    = 0x03;
	CWaitCursor	wait;
	CStringList pGraphData;
	if(!ReadGraphData(&pGraphData))
		return;

	m_pMainDlg->ShowWindow(SW_HIDE);
	m_pResultDlg->ShowWindow(SW_HIDE);

	DisplayGraph(&pGraphData);
	pGraphData.RemoveAll();

/*
	str.Format("共%d幅图形,第1幅", m_iGraphNum);
	m_pGraphDlg->SetWindowText(str);
	static BOOL first = TRUE;
	if(first)
	{
		m_pGraphDlg->DrawGraph(m_pGraphData, 0, 0);
		first = FALSE;
	}
	else
	{
		m_pGraphDlg->DrawGraph(m_pGraphData, 1, 0);
	}
	m_iGraphLoc = 0x01;

	delete pGraphData;
*/
}

/*************************************************************************
 *
 * OnDispGraph2()
 *
 * 功  能: 设置线条颜色
 *
 * 参  数: 无
 *         
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::OnDispGraph2() 
{
	if(m_btProjectType == 0x00)
	{
		Beep(650, 50);
		AfxMessageBox("请选择工程!", MB_ICONINFORMATION);
		return;
	}

	if(m_pGraphData == NULL) return;

	CGraphCtrl   dlg;

	dlg.DoModal();
}

/*************************************************************************
 *
 * GraphCtrl()
 *
 * 功  能: 执行图形控制操作
 *
 * 参  数: 无
 *
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::GraphCtrl() 
{
	CStdioFile  file;
	CString     str;
	sAnalyzeStr *pAnalyzeStr; 
	int         intX = 0, iGraphLoc = 0, iLineLoc = 0;
	BOOL        bLineEnd = FALSE, bGraphEnd = FALSE, bAdd = TRUE;
	
	if( file.Open(m_pGraphDlg->m_cGraphFileName, CFile::modeReadWrite | CFile::typeText) )
	{
		while(TRUE)
		{
			try
			{
				if(m_iGraphLoc == iGraphLoc + 1)
				{
					if(bLineEnd)
					{// 写绘制参数
						CString str1;
						bLineEnd  = FALSE;
						DWORD pos = file.GetPosition();
						file.Seek(pos, CFile::begin);
						// 计算字符串长度
						if(!iLineLoc) 
						{
							bAdd = FALSE;
							iLineLoc++;
						}
						str.Format(" %d", m_pGraphData[iGraphLoc].pLineParm[iLineLoc - 1].cColor);
						for(int i = str.GetLength(); i < 15; i++)
						{
							str.Insert(str.GetLength(), ' ');
						}

						str1.Format("%d\n", m_pGraphData[iGraphLoc].pLineParm[iLineLoc - 1].iWidth);

						str += str1;
						file.Write(str, 17);
						file.Seek(pos, CFile::begin);
					}
				}

				intX++;

				if( file.ReadString(str) )
				{
					pAnalyzeStr = AnalyzeGraphStr(str, intX, bLineEnd);
					if(pAnalyzeStr == NULL) continue;
					switch(pAnalyzeStr->iType)
					{
					case 0x04: // 线条数据结束
						if(bAdd)	
						{
							iLineLoc++;
						}
						else
						{
							bAdd = TRUE;
						}
						bLineEnd  = TRUE;
						bGraphEnd = FALSE;
						break;
					case 0x05: // 图形数据结束
						if(m_iGraphLoc == iGraphLoc + 1)
						{
							file.Close();
							m_pGraphDlg->DrawGraph(&m_pGraphData[m_iGraphLoc - 1], m_pGraphData[m_iGraphLoc - 1].iLineNum, m_iGraphLoc);
							return;
						}
						iGraphLoc++;
						iLineLoc = 0;
						bGraphEnd = TRUE;
						intX      = 0;
						break;
					}
					delete pAnalyzeStr;
				}
				else
				{// 到文件尾
					return;
				}
			}
			catch (CFileException exception1)
			{
				Beep(650, 50);
				AfxMessageBox("读文件出错!", MB_ICONINFORMATION);
				return;
			}
		}
	}

	file.Close();
}

/*************************************************************************
 *
 * OnBitmap()
 *
 * 功  能: 保存为位图
 *
 * 参  数: 无
 *
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::OnBitmap() 
{
	if(m_btProjectType == 0x00)
	{
		Beep(650, 50);
		AfxMessageBox("请选择工程!", MB_ICONINFORMATION);
		return;
	}

	if(m_pGraphData == NULL) return;

	CString fileFilterStr, fileExtStr;

	fileFilterStr = "Data files (*.BMP)|*.BMP|All files (*.*)|*.*||";
	fileExtStr    = "BMP";
	CFileDialog fileDialog( FALSE, fileExtStr, NULL, 0, fileFilterStr );
	fileDialog.m_ofn.lpstrTitle="保存为位图";

	if( fileDialog.DoModal() == IDOK )
	{
		m_pGraphDlg->SaveAsBitmap(fileDialog.GetFileName());
	}
}

/*************************************************************************
 *
 * OnDispGraph3()
 *
 * 功  能: 上一个图
 *
 * 参  数: 无
 *         
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::OnDispGraph3() 
{
	if(m_btProjectType == 0x00)
	{
		Beep(650, 50);
		AfxMessageBox("请选择工程!", MB_ICONINFORMATION);
		return;
	}

	if(m_pGraphData == NULL) return;

	if(m_iGraphLoc != 0x01)
	{
		m_iGraphLoc--;
		m_pGraphDlg->DrawGraph(&m_pGraphData[m_iGraphLoc - 1], m_pGraphData[m_iGraphLoc - 1].iLineNum, m_iGraphLoc);
		CString str;
		str.Format("共%d幅图形,第%d幅", m_iGraphNum, m_iGraphLoc);
		m_pGraphDlg->SetWindowText(str);
	}
	else
	{
		AfxMessageBox("已到第一幅图!", MB_ICONINFORMATION);
	}
}

/*************************************************************************
 *
 * OnDispGraph4()
 *
 * 功  能: 下一个图
 *
 * 参  数: 无
 *
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::OnDispGraph4() 
{
	if(m_btProjectType == 0x00)
	{
		Beep(650, 50);
		

⌨️ 快捷键说明

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