📄 tjflxform.cpp
字号:
// TjflxForm.cpp : implementation file
//
#include "stdafx.h"
#include "cvenus.h"
#include "TjflxForm.h"
#include "ShwrjCalFuction.h"
#include "Preview.h"
#include "resource.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTjflxForm
IMPLEMENT_DYNCREATE(CTjflxForm, CFormView)
CTjflxForm::CTjflxForm()
: CFormView(CTjflxForm::IDD)
{
//{{AFX_DATA_INIT(CTjflxForm)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CTjflxForm::~CTjflxForm()
{
}
void CTjflxForm::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTjflxForm)
DDX_Control(pDX, IDC_SPREAD1, m_SJSR);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTjflxForm, CFormView)
ON_WM_CONTEXTMENU()
//{{AFX_MSG_MAP(CTjflxForm)
ON_WM_CREATE()
ON_COMMAND(ID_SHWRJ_OPEN, OnShwrjOpen)
ON_COMMAND(ID_SHWRJ_CALC, OnShwrjCalc)
ON_COMMAND(ID_SHWRJ_SAVE, OnShwrjSave)
ON_COMMAND(ID_SHWRJ_PRINTPREVIEW, OnShwrjPrintpreview)
ON_COMMAND(ID_SHWRJ_PRINT, OnShwrjPrint)
ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTjflxForm diagnostics
#ifdef _DEBUG
void CTjflxForm::AssertValid() const
{
CFormView::AssertValid();
}
void CTjflxForm::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CTjflxForm message handlers
int CTjflxForm::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
GetParentFrame()->SetWindowText(_T("统计热力学法预测水化物生成温度"));
return 0;
}
void CTjflxForm::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
/* int i,j;
m_SJSR.SetMaxRows(14);
m_SJSR.SetMaxCols(5);
m_SJSR.SetDisplayColHeaders(FALSE);//取消表头
m_SJSR.SetDisplayRowHeaders(FALSE);//取消表头
m_SJSR.SetGridShowHoriz(FALSE);//不显示网格线
m_SJSR.SetGridShowVert(FALSE);//不显示网格线
m_SJSR.SetRow(-1);
m_SJSR.SetCol(-1);
m_SJSR.SetAction(3);
m_SJSR.SetFontName("宋体");
m_SJSR.SetFontSize(12);
m_SJSR.SetCol(3);
m_SJSR.SetRow(1);
m_SJSR.SetColWidth(3,10);
m_SJSR.SetRowHeight(1,15);
m_SJSR.SetValue("参数输入");
//设置表格不可编辑
for(i=1;i<=5;i++)
for(j=1;j<=14;j++)
{
m_SJSR.SetCol(i);
m_SJSR.SetRow(j);
m_SJSR.SetCellType(5);
}
// 设置单元格线样式
for(i=1;i<=5;i++)
for(j=2;j<=10;j++)
{
m_SJSR.SetCol(i);
m_SJSR.SetRow(j);
m_SJSR.SetCellBorderType(16);//单元格为实框
m_SJSR.SetCellBorderStyle(1);//实线
m_SJSR.SetCellBorderColor(RGB(0,0,0));//单元格边框颜色
m_SJSR.SetAction(16);//激活
}
m_SJSR.SetCol(1);
m_SJSR.SetColWidth(1,18);
m_SJSR.SetRowHeight(1,20);
m_SJSR.SetRow(2);
m_SJSR.SetValue("参数名称");
m_SJSR.SetRow(3);
m_SJSR.SetText("压力");
m_SJSR.SetRow(4);
m_SJSR.SetText("甲烷摩尔组成");
m_SJSR.SetRow(5);
m_SJSR.SetText("乙烷摩尔组成");
m_SJSR.SetRow(6);
m_SJSR.SetText("丙烷摩尔组成");
m_SJSR.SetRow(7);
m_SJSR.SetText("丁烷摩尔组成");
m_SJSR.SetRow(8);
m_SJSR.SetText("氮气摩尔组成");
m_SJSR.SetRow(9);
m_SJSR.SetText("二氧化碳摩尔组成");
m_SJSR.SetRow(10);
m_SJSR.SetText("硫化氢摩尔组成");
m_SJSR.SetCol(2);
m_SJSR.SetColWidth(2,18);
m_SJSR.SetRow(2);
m_SJSR.SetValue("单位");
m_SJSR.SetRow(3);
m_SJSR.SetText("MPa");
m_SJSR.SetRow(4);
m_SJSR.SetText("无因次");
m_SJSR.SetRow(5);
m_SJSR.SetText("无因次");
m_SJSR.SetRow(6);
m_SJSR.SetText("无因次");
m_SJSR.SetRow(7);
m_SJSR.SetText("无因次");
m_SJSR.SetRow(8);
m_SJSR.SetText("无因次");
m_SJSR.SetRow(9);
m_SJSR.SetText("无因次");
m_SJSR.SetRow(10);
m_SJSR.SetText("无因次");
m_SJSR.SetCol(3);
m_SJSR.SetColWidth(3,8);
m_SJSR.SetRow(2);
m_SJSR.SetValue("最小值");
m_SJSR.SetRow(3);
m_SJSR.SetText("0");
m_SJSR.SetRow(4);
m_SJSR.SetText("0");
m_SJSR.SetRow(5);
m_SJSR.SetText("0");
m_SJSR.SetRow(6);
m_SJSR.SetText("0");
m_SJSR.SetRow(7);
m_SJSR.SetText("0");
m_SJSR.SetRow(8);
m_SJSR.SetText("0");
m_SJSR.SetRow(9);
m_SJSR.SetText("0");
m_SJSR.SetRow(10);
m_SJSR.SetText("0");
m_SJSR.SetCol(4);
m_SJSR.SetColWidth(4,8);
m_SJSR.SetRow(2);
m_SJSR.SetValue("最大值");
m_SJSR.SetRow(3);
m_SJSR.SetText("80");
m_SJSR.SetRow(4);
m_SJSR.SetText("1");
m_SJSR.SetRow(5);
m_SJSR.SetText("1");
m_SJSR.SetRow(6);
m_SJSR.SetText("1");
m_SJSR.SetRow(7);
m_SJSR.SetText("1");
m_SJSR.SetRow(8);
m_SJSR.SetText("1");
m_SJSR.SetRow(9);
m_SJSR.SetText("1");
m_SJSR.SetRow(10);
m_SJSR.SetText("1");
m_SJSR.SetCol(5);
m_SJSR.SetColWidth(5,9);
m_SJSR.SetRow(2);
m_SJSR.SetValue("参数值");
for(i=3;i<=10;i++)
{
m_SJSR.SetRow(i);
m_SJSR.SetCellType(2);
m_SJSR.SetTypeFloatDecimalPlaces(5);
m_SJSR.SetTypeFloatMin(0);
m_SJSR.SetTypeFloatMax(99999);
}
m_SJSR.SetCol(3);
m_SJSR.SetRow(12);
m_SJSR.SetColWidth(3,10);
m_SJSR.SetValue("计算结果");
m_SJSR.SetCol(2);
m_SJSR.SetRow(13);
m_SJSR.SetColWidth(2,15);
m_SJSR.SetValue("水化物生成温度");
m_SJSR.SetCol(4);
m_SJSR.SetRow(13);
m_SJSR.SetCellType(5);
m_SJSR.SetValue("℃");
m_SJSR.SetCol(2);
m_SJSR.SetRow(13);
m_SJSR.SetCol2(2);
m_SJSR.SetRow2(13);
m_SJSR.SetBlockMode(TRUE);
m_SJSR.SetCellBorderType(16);
m_SJSR.SetCellBorderStyle(1);
m_SJSR.SetCellBorderColor(RGB(0,0,0));
m_SJSR.SetAction(16);
m_SJSR.SetBlockMode(FALSE);
m_SJSR.SetCol(3);
m_SJSR.SetRow(13);
m_SJSR.SetCol2(3);
m_SJSR.SetRow2(13);
m_SJSR.SetBlockMode(TRUE);
m_SJSR.SetCellBorderType(16);
m_SJSR.SetCellBorderStyle(1);
m_SJSR.SetCellBorderColor(RGB(0,0,0));
m_SJSR.SetAction(16);
m_SJSR.SetBlockMode(FALSE);
m_SJSR.SetCol(4);
m_SJSR.SetRow(13);
m_SJSR.SetCol2(4);
m_SJSR.SetRow2(13);
m_SJSR.SetBlockMode(TRUE);
m_SJSR.SetCellBorderType(16);
m_SJSR.SetCellBorderStyle(1);
m_SJSR.SetCellBorderColor(RGB(0,0,0));
m_SJSR.SetAction(16);
m_SJSR.SetBlockMode(FALSE);
m_SJSR.SetRow(14);
m_SJSR.SetValue(" ");
*/
}
void CTjflxForm::OnShwrjOpen()
{
CString fileDialogFilter1="热力学法预测温度数据文件(*.RLXZ)|*.RLXZ||";
const char fileDialogExt1[] = "RLXZ";
CFileDialog fileDialog1(TRUE,fileDialogExt1,NULL,OFN_FILEMUSTEXIST, fileDialogFilter1);
if(fileDialog1.DoModal()==IDOK)
{
CString filename1=fileDialog1.GetPathName();//+fileDialog.GetFileName();
m_SJSR.LoadFromFile(filename1);
}
UpdateData(FALSE);
}
void CTjflxForm::OnShwrjCalc()
{
//p为水合物生成压力(输入)
double p,a,B,c,d,j,numc1,numc2,numbc1,numbc2,f,f1,t,t1,tt;
double a1[10],a2[10],B1[10],b2[10],c1[10],c2[10],y[10];
CString Temp1,Temp2,Temp4,Temp5,Temp6,Temp7,Temp8;
char Temp3[30];
m_SJSR.SetCol(5);
m_SJSR.SetRow(3);
Temp1=m_SJSR.GetText();
p=atof(Temp1);
m_SJSR.SetRow(4);
Temp2=m_SJSR.GetText();
y[0]=atof(Temp2);
m_SJSR.SetRow(5);
Temp4=m_SJSR.GetText();
y[1]=atof(Temp4);
m_SJSR.SetRow(6);
Temp5=m_SJSR.GetText();
y[2]=atof(Temp5);
m_SJSR.SetRow(7);
Temp5=m_SJSR.GetText();
y[3]=atof(Temp5);
m_SJSR.SetRow(8);
Temp6=m_SJSR.GetText();
y[4]=atof(Temp5);
m_SJSR.SetRow(9);
Temp7=m_SJSR.GetText();
y[5]=atof(Temp5);
m_SJSR.SetRow(10);
Temp8=m_SJSR.GetText();
y[6]=atof(Temp5);
/* p=2;//压力
y[0]=0.784; y[1]=0.06; y[2]=0.036; y[3]=0.024; y[4]=0.094; y[5]=0.002;//数据输入*/
a1[0]=6.0499; a1[1]=9.4892; a1[2]=-43.67; a1[3]=-43.67; a1[4]=3.2485; a1[5]=23.035; a1[6]=4.9258;
B1[0]=0.02844; B1[1]=0.04058; B1[2]=0; B1[3]=0; B1[4]=0.02622; B1[5]=0.09037; B1[6]=0.00934;
a2[0]=6.2957; a2[1]=11.941; a2[2]=18.276; a2[3]=13.6942; a2[4]=7.599; a2[5]=25.271; a2[6]=2.403;
b2[0]=0.02845; b2[1]=0.0418; b2[2]=0.046613; b2[3]=0.02773; b2[4]=0.024475; b2[5]=0.09781; b2[6]=0.00633;
t=6.38*log(9.869*p)+262;
int xz,i;
xz=1;
//由用户选择含硫或不含硫
if(xz==1)
{
if(p<=6.865)
{
a=3.69974;
B=0.01476;
c=0.117660901;
d=0.05883045;
}
else
{
a=8.97511;
B=0.03303965;
c=0.117660901;
d=0.05883045;
}
j=5;
}
if(xz==2)
{
a=5.40694;
B=0.02133;
c=0.117660901;
d=0.05883045;
j=6;
}
do
{
numc1=0;
numc2=0;
numbc1=0;
numbc2=0;
for(i=0;i<=j;i++)
{
c1[i]=exp(a1[i]-B1[i]*t);
c2[i]=exp(a2[i]-b2[i]*t);
numc1=numc1+c1[i]*y[i];
numc2=numc2+c2[i]*y[i];
numbc1=numbc1+B1[i]*c1[i]*y[i];
numbc2=numbc2+b2[i]*c2[i]*y[i];
}
f=a-B*t+c*log(1+numc1*9.869*p)+d*log(1+numc2*9.869*p);
f1=-B-(c*9.869*p*numbc1)/(1+numc1*9.869*p)-(d*9.869*p*numbc2)/(1+numc2*9.869*p);
t1=t-f/f1;
t=t1;
}
while (fabs(f/f1)>0.000001);
//tt为生成温度(输出)
tt=t1-273.15;
//输出结果
gcvt(tt,7,Temp3);
m_SJSR.SetCol(2);
m_SJSR.SetRow(13);
m_SJSR.SetValue(Temp3);
}
void CTjflxForm::OnShwrjSave()
{
UpdateData(TRUE);
CString fileDialogFilter1="热力学法预测温度数据文件(*.RLXZ)|*.RLXZ||";
const char fileDialogExt1[] = "RLXZ";
CFileDialog fileDialog1(FALSE,fileDialogExt1,NULL,OFN_FILEMUSTEXIST, fileDialogFilter1);
if(fileDialog1.DoModal()==IDOK)
{
CString filename1=fileDialog1.GetPathName();//+fileDialog.GetFileName();
m_SJSR.SaveToFile(filename1,FALSE);
}
}
void CTjflxForm::OnShwrjPrintpreview()
{
// TODO: Add your command handler code here
CPreview dlg(&m_SJSR);
dlg.DoModal();
}
void CTjflxForm::OnShwrjPrint()
{
// TODO: Add your command handler code here
m_SJSR.SetAction(13);
}
void CTjflxForm::OnContextMenu(CWnd*, CPoint point)
{
// CG: This block was added by the Pop-up Menu component { if (point.x == -1 && point.y == -1){ //keystroke invocation CRect rect; GetClientRect(rect); ClientToScreen(rect); point = rect.TopLeft(); point.Offset(5, 5); } CMenu menu; VERIFY(menu.LoadMenu(IDR_POPUP_SHWRJ)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); CWnd* pWndPopupOwner = this;// while (pWndPopupOwner->GetStyle() & WS_CHILD)// pWndPopupOwner = pWndPopupOwner->GetParent(); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner); }
}
void CTjflxForm::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if(m_SJSR.m_hWnd != NULL)
{
CRect rc;
GetClientRect(&rc);
m_SJSR.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), NULL);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -