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

📄 cvenus.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:

	m_cBaseFilePath.Empty();
	BaseFileChanged();

	m_pMainDlg->SetArtType(m_btProjectType);
	m_pMainDlg->m_sheet.SetActivePage(0);

	m_pMainDlg->InitGrid(m_btProjectType);
	m_pMainDlg->ShowWindow(SW_SHOW);
	m_pMainDlg->SetFocus();

	((CMainFrame*)AfxGetMainWnd())->m_wndWorkSpace.UpdateSelected();
	
}

/*************************************************************************
 *
 * OnUpdateProject()
 *
 * 功  能: Project1 到 Project21的消息更新处理函数
 *
 * 参  数: 
 *         
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::OnUpdateProject(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_btProjectType == (pCmdUI->m_nID - IDM_PROJECT_1 + 1));
}



/*************************************************************************
 *
 * ReadInputData()
 *
 * 功  能: 读数据文件
 *
 * 参  数: sInputDataParm* pInputParm: 读文件参数
 *         
 * 返回值: true:	读取成功
 *		   false:	读取失败,或者被用户取消
 *
 *************************************************************************/
BOOL CCVenusApp::ReadInputData(sInputDataParm* pInputParm, CString* pFileStr) 
{
	CStdioFile file;
	int        loc; // 标记读数据条数
	CString       strOpenFile; 

	if(pFileStr == NULL)
		return false;

	strOpenFile = GetOpenFileName(0);
	if(strOpenFile.IsEmpty() || !file.Open(strOpenFile, CFile::modeRead) )
		return false;
	// 读表格数据
	for(int i = 0; i < pInputParm->iGridDataNum; i++)
	{
		try
		{
			file.ReadString(pFileStr[i]);
		}
		catch (CFileException exception1)
		{
			Beep(650, 700);
			AfxMessageBox("读文件出错!", MB_ICONINFORMATION);
			return false;
		}
	}
	loc = i;

	// 读复选框数据
	for(i = 0; i < pInputParm->iCheckDataNum; i++)
	{
		try
		{
			file.ReadString(pFileStr[i + loc]);
		}
		catch (CFileException exception1)
		{
			Beep(650, 700);
			AfxMessageBox("读文件出错!", MB_ICONINFORMATION);
			return false;
		}
	}
	loc += i;

	// 读组合框数据
	for(i = 0; i < pInputParm->iComboDataNum; i++)
	{
		try
		{
			file.ReadString(pFileStr[i + loc]);
		}
		catch (CFileException exception1)
		{
			Beep(650, 700);
			AfxMessageBox("读文件出错!", MB_ICONINFORMATION);
			return false;
		}
	}

	file.Close();

	if(m_pGraphDlg->IsWindowVisible())
	{
		m_pGraphDlg->ShowWindow(SW_HIDE);
	}
	m_cBaseFilePath = strOpenFile;
	BaseFileChanged();
	
	return true;
}

extern int g_iProgress;	// 全局变量。用来保存计算进度
extern	bool	bFinishThread;
/*************************************************************************
 *
 * ComputeThreadProc()
 *
 * 功  能: 分析计算辅助线程
 *
 * 参  数: 
 *
 * 返回值: 
 *
 *************************************************************************/
UINT ComputeThreadProc(LPVOID pParam)
{
    switch(theApp.m_btProjectType)
	{
	case 0x01://工艺初选
		{
		gycx         jsgycx;	// 1
        jsgycx.gycxjs();
		break;
		}
	case 0x02:// 自喷井气水节点分析
		{
		zpjjdfx      zpjs;		// 2
		zpjs.ZPJJDJS();
		break;
		}

	// hss
	case 0x03:// 自喷气水井动态分析
		{
		CZpjdtfx	zpjd;		// 19
        zpjd.Dtfx();
		break;
		}

	case 0x04:// 气举排水采气节点分析
		{
		qjjjdfx      qjjdfx;	// 3
		qjjdfx.qjjjdfxjs();
		break;
		}

	// hss
	case 0x05:// 气举排水采气动态分析
		{
		CQjdtfx		qjd;		// 20
//		qjd.Test();			
        qjd.Dtfx();
		break;
		}

	case 0x06:// 气举排水采气优化设计
		{
		qjyhsj       qjsj;		// 4
        qjsj.qjyhsjjs();
		break;
		}
	case 0x07:// 抽油机排水采气优化设计
		{
		jcyhsj       jcjs;		// 5
        jcjs.cyjjsjyhsj();
		break;
		}
	case 0x08: // 电潜泵排水采气节点分析
		{
		dqbyhsj      dqbjs;		// 6.7
        dqbjs.dqbjdfx();
		break;
		}
	case 0x09:// 电潜泵排水采气优化设计
		{
		dqbyhsj      dqbjs;		// 6.7
        dqbjs.dqbyhsjjs();
		break;
		}
	case 0x0A:// 射流泵排水采气节点分析
		{
		slb          slbjs;		// 8.9
        slbjs.slbjdfx();
		break;
		}

	// hss
	case 0x0B:// 射流泵排水采气动态分析	
		{
		CSlbdtfx	slbd;		// 21
        slbd.dtfx();
		break;
		}

	case 0x0C: // 射流泵排水采气设计
		{
		slb          slbjs;		// 8.9
        slbjs.slbyhsj();
		break;
		}
	case 0x0D:// 气井连续排液临界流量
		{
		qjlxpyljll   lxpy;		// 10
        lxpy.Onqjpy();
		break;
		}
	case 0x0E:// 多相流垂管流压力梯度
		{
		dxlcglyltd   dxlcgljs;	// 11
        dxlcgljs.dxlcglyltdjs();
		break;
		}
	case 0x0F:// 生产气井压力梯度
		{
		qjyltd       jsz;		// 12.13
        jsz.qjyltdjs("采气井");
		break;
		}
	case 0x10:// 注气井压力梯度
		{
		qjyltd       jsz;		// 12.13
        jsz.qjyltdjs("注气井");
		break;
		}
	case 0x11:// 经济评价

		break;
	case 0x12:// 生产气井节点分析
		{
		scjjdfx       jdfx;		// 15
        jdfx.scjjdfxjs();
		break;
		}

	// hss
	case 0x13:// 生产气井动态分析
		{
		CScqjdtfx	scqjd;		// 22
        scqjd.Dtfx();

		break;
		}

	case 0x14:// 凝析气井节点分析
		{
		CNxqjjdfx       fx;		// 16
        fx.Computer();
		break;
		}
	case 0x15:// 柱塞气举举升分析
		{
		CCal_Zsqj       zsqj;		// 17
        zsqj.Jsfx();
		break;
		}
	case 0x16:// 柱塞气举优化设计
		{
		CCal_Zsqj       zsqj;		// 18
        zsqj.Yhsj();
		break;
		}

	}
	// WM_THREADFINISHED is user-defined message
	if(bFinishThread)
	{
		CString	str = theApp.GetMyAppPath();
		DeleteFile(str + "\\tempfile.txt");
		DeleteFile(str + "\\tempfile.gra");
	}
	::PostMessage((HWND) pParam, WM_THREADFINISHED, 0, 0);
	return 0; // ends the thread
}

/*************************************************************************
 *
 * OnAnalyseCalc1()
 *
 * 功  能: 分析计算
 *
 * 参  数: 无
 *
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::OnAnalyseCalc1() 
{

	if(m_btProjectType == 0x00)
	{
		Beep(650, 50);
		AfxMessageBox(_T("请选择工程!"), MB_ICONINFORMATION);
		return;
	}
	if(AfxMessageBox(_T("你确定要计算吗?"), MB_YESNO|MB_ICONQUESTION) == IDNO )
		return;
	// 检查输入合法性
	if( !m_pMainDlg->CheckInput(m_btProjectType) )
	{
		return;
	}
	m_pGraphDlg->ShowWindow(SW_HIDE);
	m_pResultDlg->ShowWindow(SW_HIDE);

	CComputer		dlg;
	if(dlg.DoModal() == IDCANCEL)
	{
		Sleep(300);
		return;
	}


}

void CCVenusApp::OnVenusSyn() 
{
	// TODO: Add your command handler code here
	if(m_cBaseFilePath.IsEmpty())
		return;
	if(m_btProjectType == 0x00)
	{
		Beep(650, 50);
		AfxMessageBox(_T("请选择工程!"), MB_ICONINFORMATION);
		return;
	}
	if(AfxMessageBox(_T("你确定要同步吗?"), MB_YESNO|MB_ICONQUESTION) == IDNO )
		return;
	// 检查输入合法性
	if( !m_pMainDlg->CheckInput(m_btProjectType) )
	{
		return;
	}
	m_pGraphDlg->ShowWindow(SW_HIDE);
	m_pResultDlg->ShowWindow(SW_HIDE);

	CComputer		dlg;
	dlg.m_strTitle = _T("正在同步...");
	if(dlg.DoModal() == IDCANCEL)
	{
		Sleep(300);
		return;
	}
	// 将计算结果保存到同名文件中
	{
		HANDLE     hSearch; 
		WIN32_FIND_DATA FileData; 
		CString strSrcFileName,strDstFileName, strDstFileExt;
		GetExtName(1, &strDstFileExt);
		strDstFileName = m_cBaseFileLeft + '.' + strDstFileExt;
		strSrcFileName = GetMyAppPath();
		strSrcFileName += "\\tempfile.txt";
		hSearch = FindFirstFile(strSrcFileName, &FileData); 
		if (hSearch == INVALID_HANDLE_VALUE) 
		{ 
//			AfxMessageBox("计算结果不存在,请重新计算!");
			return;
		} 
		CStdioFile  file, rst_file;
		CString     FileStr;
		if( !file.Open(strSrcFileName, CFile::modeReadWrite | CFile::typeText) )
		{
			return;
		}
		if( !rst_file.Open(strDstFileName, CFile::modeWrite | CFile::modeCreate) )
		{
			return;
		}
		// 修改结果文件
		while(TRUE)
		{
			try
			{
				if( file.ReadString(FileStr) )
				{
					if( FileStr.Find("$$") != -1 )
					{// 标题
						FileStr.Replace("$$", "“"+m_cBaseFileName+"”");
					}
					rst_file.WriteString(FileStr + '\n');
				}
				else
				{// 到文件尾
					break;
				}
			}
			catch (CFileException exception1)
			{
				Beep(650, 50);
				AfxMessageBox("读文件出错!", MB_ICONINFORMATION);
				return;
			}
		}
		// 修改结果文件名
		file.Close();
		rst_file.Close();
	}
	
	// 将图形结果保存到同名文件中
	{
		HANDLE     hSearch; 
		WIN32_FIND_DATA FileData; 
		CString strSrcFileName,strDstFileName, strDstFileExt;
		GetExtName(2, &strDstFileExt);
		strDstFileName = m_cBaseFileLeft + '.' + strDstFileExt;
		strSrcFileName = GetMyAppPath();
		strSrcFileName += "\\tempfile.gra";
		hSearch = FindFirstFile(strSrcFileName, &FileData); 
		if (hSearch == INVALID_HANDLE_VALUE) 
		{ 
			return;
		} 
		CStdioFile  file, rst_file;
		CString     FileStr;
		if( !file.Open(strSrcFileName, CFile::modeReadWrite | CFile::typeText) )
		{
			return;
		}
		if( !rst_file.Open(strDstFileName, CFile::modeWrite | CFile::modeCreate) )
		{
			return;
		}
		// 修改结果文件
		while(TRUE)
		{
			try
			{
				if( file.ReadString(FileStr) )
				{
					if( FileStr.Find("$$") != -1 )
					{// 标题
						FileStr.Replace("$$", "“"+m_cBaseFileName+"”");
					}
					rst_file.WriteString(FileStr + '\n');
				}
				else
				{// 到文件尾
					break;
				}
			}
			catch (CFileException exception1)
			{
				Beep(650, 50);
				AfxMessageBox("读文件出错!", MB_ICONINFORMATION);
				return;
			}
		}
		// 修改结果文件名
		file.Close();
		rst_file.Close();
	}
	
	
}


void CCVenusApp::OnUpdateVenusSyn(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(!m_cBaseFilePath.IsEmpty());
	
}

/*************************************************************************
 *
 * OnDisCurRst()
 *
 * 功  能: 显示当前计算结果
 *
 * 参  数: 无
 *
 * 返回值: 无
 *
 *************************************************************************/
void CCVenusApp::OnDisCurRst() 
{
	CStdioFile file;
	CString    str;
	HANDLE     hSearch; 
	WIN32_FIND_DATA FileData; 

	if(m_btProjectType == 0x00)
	{
		Beep(650, 50);
		AfxMessageBox("请选择工程!", MB_ICONINFORMATION);
		return;
	}
	str = GetMyAppPath();
	str += "\\tempfile.txt";
	hSearch = FindFirstFile(str, &FileData); 
	if (hSearch == INVALID_HANDLE_VALUE) 
	{ 
		AfxMessageBox("计算结果不存在,请重新计算!");
		return;
	} 

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

	m_cCalcFilePath.Empty();
	m_pResultDlg->m_cCalcFileName = str;
	m_pResultDlg->DisplayCalcRst();
	m_pResultDlg->ShowWindow(SW_SHOW);
	m_pResultDlg->SetFocus();
	m_bResultDisplayed = true;
}

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

	CString strFileName, strFileExt;
	if(m_cBaseFileLeft.IsEmpty())
	{	
		strFileName = GetOpenFileName(1);
		if(strFileName.IsEmpty()) return;
	}
	else
	{
		GetExtName(1, &strFileExt);
		strFileName = m_cBaseFileLeft + '.' + strFileExt;
	}

	HANDLE      hSearch; 
	WIN32_FIND_DATA FileData; 
	
	hSearch = FindFirstFile(strFileName, &FileData); 
	if (hSearch == INVALID_HANDLE_VALUE) 
	{ 
		AfxMessageBox(_T("计算结果文件不存在!"), MB_ICONINFORMATION);
		return;
	}


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

	m_cCalcFilePath = strFileName;
	m_pResultDlg->m_cCalcFileName = strFileName;
	m_pResultDlg->DisplayCalcRst();
	m_pResultDlg->ShowWindow(SW_SHOW);

⌨️ 快捷键说明

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