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

📄 thmtbform.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
字号:
// ThmtbForm.cpp : implementation file
//

#include "stdafx.h"
#include "cvenus.h"
#include "ThmtbForm.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

/////////////////////////////////////////////////////////////////////////////
// CThmtbForm

IMPLEMENT_DYNCREATE(CThmtbForm, CFormView)

CThmtbForm::CThmtbForm()
	: CFormView(CThmtbForm::IDD)
{
	//{{AFX_DATA_INIT(CThmtbForm)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

CThmtbForm::~CThmtbForm()
{
}

void CThmtbForm::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CThmtbForm)
	DDX_Control(pDX, IDC_SPREAD1, m_SJSR);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CThmtbForm, CFormView)
	ON_WM_CONTEXTMENU()
	//{{AFX_MSG_MAP(CThmtbForm)
	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()

/////////////////////////////////////////////////////////////////////////////
// CThmtbForm diagnostics

#ifdef _DEBUG
void CThmtbForm::AssertValid() const
{
	CFormView::AssertValid();
}

void CThmtbForm::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CThmtbForm message handlers

int CThmtbForm::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	GetParentFrame()->SetWindowText(_T("ПOHOMapeB Γ.B.法预测水化物生成压力"));
	
	return 0;
}

void CThmtbForm::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.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,20);
	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.SetRowHeight(2,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(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,11);
	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,11);
	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("MPa");

	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 CThmtbForm::OnShwrjOpen() 
{
	CString fileDialogFilter1="П Γ.B.法预测压力数据(*.TYLZ)|*.TYLZ||";
	const char fileDialogExt1[] = "TYLZ";
	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 CThmtbForm::OnShwrjCalc() 
{
	 double y[10],t,Rg[20],BB[20],BB1[20],R,B,B1,p,x1,x2,x3,x4,y1,y2,y3,y4,yy1,yy2,yy3,yy4,St;
	 int i;
	CString Temp1,Temp2,Temp4,Temp5,Temp6,Temp7,Temp8;
	char Temp3[30];
	m_SJSR.SetCol(5);
	m_SJSR.SetRow(3);   
	Temp1=m_SJSR.GetText();
    St=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);	

	//数组y[]---天然气摩尔组成,由用户输入
//	y[0]=0.784;y[1]=0.06; y[2]=0.036; y[3]=0.024; y[4]=0.094; y[5]=0.002,y[6]=0;
	//温度T由用户输入,单位为摄氏度
	t=St+273;
//	t=9.5574+273;

	Rg[0]=0.56; Rg[1]=0.58; Rg[2]=0.6; Rg[3]=0.62; Rg[4]=0.64; Rg[5]=0.66; Rg[6]=0.68; Rg[7]=0.7;
	Rg[8]=0.72; Rg[9]=0.75; Rg[10]=0.8; Rg[11]=0.85; Rg[12]=0.9; Rg[13]=0.95; Rg[14]=1;
	BB[0]=24.25; BB[1]=20; BB[2]=17.67; BB[3]=16.45; BB[4]=15.47; BB[5]=14.76; BB[6]=14.34; BB[7]=14;
	BB[8]=13.72; BB[9]=13.72; BB[10]=12.74; BB[11]=12.18; BB[12]=11.66; BB[13]=11.17; BB[14]=10.77;
	BB1[0]=77.4; BB1[1]=64.2; BB1[2]=56.1; BB1[3]=51.6; BB1[4]=48.6; BB1[5]=46.9; BB1[6]=45.6; BB1[7]=44.4;
	BB1[8]=43.4; BB1[9]=42; BB1[10]=39.9; BB1[11]=37.9; BB1[12]=36.2; BB1[13]=34.5; BB1[14]=33.1;

	//R为相对密度
	R=(y[0]*16+y[1]*30+y[2]*44+y[3]*58+y[4]*28+y[5]*44+y[6]*34)/29;
	for(i=1;i<=12;i++)
	{
		if(R>=Rg[i]&&R<=Rg[i+1])
		{
			x1=Rg[i-1];
			x2=Rg[i];
			x3=Rg[i+1];
			x4=Rg[i+2];
			y1=BB[i-1];
			y2=BB[i];
			y3=BB[i+1];
			y4=BB[i+2];
			yy1=BB1[i];
			yy2=BB1[i+1];
			yy3=BB[i+2];
			yy4=BB[i+3];
		    break;
		}
	}
	B=(R-x2)*(R-x3)*(R-x4)*y1/((x1-x2)*(x1-x3)*(x1-x4))+(R-x1)*(R-x3)*(R-x4)*y2/((x2-x1)*(x2-x3)*(x2-x4));
	B=B+(R-x1)*(R-x2)*(R-x4)*y3/((x3-x1)*(x3-x2)*(x3-x4))+(R-x1)*(R-x2)*(R-x3)*y4/((x4-x1)*(x4-x2)*(x4-x3));
	B1=(R-x2)*(R-x3)*(R-x4)*yy1/((x1-x2)*(x1-x3)*(x1-x4))+(R-x1)*(R-x3)*(R-x4)*yy2/((x2-x1)*(x2-x3)*(x2-x4));
	B1=B1+(R-x1)*(R-x2)*(R-x4)*yy3/((x3-x1)*(x3-x2)*(x3-x4))+(R-x1)*(R-x2)*(R-x3)*yy4/((x4-x1)*(x4-x2)*(x4-x3));
	if(t>=273)
	{
	   p=pow(10,(-1.0055+0.0541*(B+t-273)));
	}
	else   
	{
	   p=pow(10,(-1.0055+0.0171*(B1-t+273)));
	}
   //输出结果
   gcvt(p,7,Temp3);
   m_SJSR.SetCol(2);
   m_SJSR.SetRow(13);
   m_SJSR.SetValue(Temp3);	
	
}

void CThmtbForm::OnShwrjSave() 
{
	UpdateData(TRUE);
	CString fileDialogFilter1="П Γ.B.法预测压力数据(*.TYLZ)|*.TYLZ||";
	const char fileDialogExt1[] = "TYLZ";
	CFileDialog fileDialog1(FALSE,fileDialogExt1,NULL,OFN_FILEMUSTEXIST, fileDialogFilter1);
    if(fileDialog1.DoModal()==IDOK)
	{
	    CString filename1=fileDialog1.GetPathName();//+fileDialog.GetFileName();		
	    m_SJSR.SaveToFile(filename1,FALSE);		
	}	
	
}

void CThmtbForm::OnShwrjPrintpreview() 
{
	// TODO: Add your command handler code here
	CPreview dlg(&m_SJSR);
	dlg.DoModal();
	
}

void CThmtbForm::OnShwrjPrint() 
{
    m_SJSR.SetAction(13);		
	
}

void CThmtbForm::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 CThmtbForm::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 + -