📄 cvenus.cpp
字号:
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 + -