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

📄 controlview.cpp

📁 该软件是我读硕士的时候写的
💻 CPP
字号:
// ControlView.cpp : implementation file
//

#include "stdafx.h"
#include "process.h"
#include "ControlView.h"
#include "ProcessDoc.h"

#include "MainFrm.h"

#include <iostream.h>
#include <fstream.h>
#include <math.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CControlView

IMPLEMENT_DYNCREATE(CControlView, CFormView)

CControlView::CControlView()
	: CFormView(CControlView::IDD)
{
	//{{AFX_DATA_INIT(CControlView)
	m_DepthFrom = 0.0;
	m_DepthTo = 0.0;
	m_ValueAdj = 0.0;
	m_DepthFlex = 0.0;
	m_TrueLeftScale = 0.0;
	m_TrueRightScale = 0.0;
	m_FlexFrom = 0.0;
	m_FlexTo = 0.0;
	m_Value = 0.0;
	m_ScaleLeft = 0.0;
	m_ScaleRight = 0.0;
	//}}AFX_DATA_INIT
}

CControlView::~CControlView()
{
}

void CControlView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CControlView)
	DDX_Text(pDX, IDC_EDIT1, m_DepthFrom);
	DDX_Text(pDX, IDC_EDIT2, m_DepthTo);
	DDX_Text(pDX, IDC_EDIT3, m_ValueAdj);
	DDX_Text(pDX, IDC_EDIT4, m_DepthFlex);
	DDX_Text(pDX, IDC_EDIT6, m_TrueLeftScale);
	DDX_Text(pDX, IDC_EDIT7, m_TrueRightScale);
	DDX_Text(pDX, IDC_EDIT8, m_FlexFrom);
	DDX_Text(pDX, IDC_EDIT9, m_FlexTo);
	DDX_Text(pDX, IDC_EDIT10, m_Value);
	DDX_Text(pDX, IDC_EDIT11, m_ScaleLeft);
	DDX_Text(pDX, IDC_EDIT12, m_ScaleRight);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CControlView, CFormView)
	//{{AFX_MSG_MAP(CControlView)
	ON_BN_CLICKED(IDC_VALUEADJUST, OnValueadjust)
	ON_BN_CLICKED(IDC_DEPTHFLEX, OnDepthFlex)
	ON_BN_CLICKED(IDC_CHANGELEFTnRIGHT, OnCHANGELEFTnRIGHT)
	ON_BN_CLICKED(IDC_VALUEADJUST2, OnValueadjust2)
	ON_BN_CLICKED(IDC_SCALECHANGE, OnScalechange)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CControlView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CControlView message handlers

void CControlView::OnValueadjust() 
{
	CProcessDoc* pDoc = (CProcessDoc*)GetDocument();
/*
	DepthFrom=pDoc->DataDepth[0];
	DepthTo=pDoc->DataDepth[pDoc->DataNum-1];
	m_DepthFrom=DepthFrom;
	m_DepthTo=DepthTo;
	UpdateData(false);*/

	
	UpdateData(true);
    DepthFrom=m_DepthFrom;
	DepthTo=m_DepthTo;
	ValueAdj=m_ValueAdj;

	int i,j,k;
	double DataData[SHUZU],DataDepth[SHUZU];

	for(i=0;i<pDoc->DataNum;i++)
	{  
		DataData[i]=pDoc->DataData[i];
		DataDepth[i]=pDoc->DataDepth[i];
       if(pDoc->DataDepth[i]>DepthFrom&&pDoc->DataDepth[i]<DepthTo)
		    DataData[i]=pDoc->DataData[i]+ValueAdj;
	   
	}
//	  pDoc->UpdateAllViews(NULL);
	ofstream ostrm;
    ostrm.open( "C:\\temp\\ValueAdj.txt");
	
    for(j=0;j<pDoc->DataNum;j++)
	{
		ostrm<<DataDepth[j]<<",";
        ostrm<<DataData[j]<<endl;
	}
	ostrm.close();
}

void CControlView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
}

void CControlView::OnDepthFlex() 
{   //本操作要求FlexFrom应大于FlexTo,即使原曲线的小深度值变化
	CProcessDoc* pDoc = (CProcessDoc*)GetDocument();
	
	//获得的主框架的句柄
	CMainFrame *pFrm=(CMainFrame*)AfxGetMainWnd();
	//获得活动视图的句柄
	CProcessView *pView=(CProcessView* )pFrm->GetActiveView();
	
	UpdateData(true);
    FlexFrom=m_FlexFrom;
	FlexTo=m_FlexTo;
	DepthFlex=m_DepthFlex;

	int i,j,k;
	double temp1,temp2;
	double DataData[SHUZU],DataDepth[SHUZU];

	temp1=FlexTo-FlexFrom;
	for(i=(pDoc->DataNum-1);i>=0;i--)
	{  
		DataData[i]=pDoc->DataData[i];
		
		if(pDoc->DataDepth[i]>FlexTo&&pDoc->DataDepth[i]<FlexFrom)
		{DataDepth[i]=pDoc->DataDepth[i]+DepthFlex*(pDoc->DataDepth[i]-FlexFrom)/temp1;}
		else {DataDepth[i]=pDoc->DataDepth[i];}
	   
	}
	ofstream ostrm;
    ostrm.open( "C:\\temp\\DepthFlex.txt");
	
    for(j=0;j<pDoc->DataNum;j++)
	{
		ostrm<<DataDepth[j]<<",";
        ostrm<<DataData[j]<<endl;
	}
	ostrm.close();

	for(i=0;i<pDoc->DataNum;i++)
	{  
		pDoc->DataData[i]=DataData[i];
		pDoc->DataDepth[i]=DataDepth[i];
        
	}
	//重绘processView
	 pDoc->UpdateAllViews(NULL);

}

void CControlView::OnCHANGELEFTnRIGHT() 
{
    CProcessDoc* pDoc = (CProcessDoc*)GetDocument();
 
	UpdateData(true);
	TrueLeftScale=m_TrueLeftScale;
	TrueRightScale=m_TrueRightScale;

	int i,j,k;
	double DataData[SHUZU],DataDepth[SHUZU];

	for(i=0;i<pDoc->DataNum;i++)
	{  
		DataData[i]=TrueRightScale-pDoc->DataData[i]+TrueLeftScale;
		DataDepth[i]=pDoc->DataDepth[i];
        
	}
//	  pDoc->UpdateAllViews(NULL);
	ofstream ostrm;
    ostrm.open( "C:\\temp\\changeleftright.txt");
	
    for(j=0;j<pDoc->DataNum;j++)
	{
		ostrm<<DataDepth[j]<<",";
        ostrm<<DataData[j]<<endl;
	}
	ostrm.close();	 
}

void CControlView::OnValueadjust2() 
{
	CProcessDoc* pDoc = (CProcessDoc*)GetDocument();
	
	UpdateData(true);
    Value=m_Value;
	
	int i,j,k;
	double DataData[SHUZU],DataDepth[SHUZU];
	for(i=0;i<pDoc->DataNum;i++)
	{  
		DataDepth[i]=pDoc->DataDepth[i];
    	DataData[i]=Value-pDoc->DataData[i];
		
	}
	ofstream ostrm;
    ostrm.open( "C:\\temp\\ValueAdj.txt");
	
    for(j=0;j<pDoc->DataNum;j++)
	{
		ostrm<<DataDepth[j]<<",";
        ostrm<<DataData[j]<<endl;
	}
	ostrm.close();
}
////////////////////////////////////////////
void CControlView::OnScalechange() 
{//对数刻度的转换
	CProcessDoc* pDoc = (CProcessDoc*)GetDocument();
	
	UpdateData(true);
	ScaleLeft=m_ScaleLeft;
	ScaleRight=m_ScaleRight;
    	
	int i,j,k;
	double Xtemp1,Xtemp2;
	double ScaleLeftTemp,ScaleRightTemp;
	ScaleLeftTemp=log10(ScaleLeft);
	ScaleRightTemp=log10(ScaleRight);

	for(i=0;i<pDoc->DataNum;i++)
	{  
		Xtemp1=(pDoc->DataData[i]-ScaleLeft)/(ScaleRight-ScaleLeft);
		Xtemp2=Xtemp1*(ScaleRightTemp-(ScaleLeftTemp))+ScaleLeftTemp;
		
        DataData[i]=pow(10.0,Xtemp2);
		DataDepth[i]=pDoc->DataDepth[i];
		
		
	}
	ofstream ostrm;
    ostrm.open( "C:\\temp\\ScaleChange.txt");
	
    for(j=0;j<pDoc->DataNum;j++)
	{
		ostrm<<DataDepth[j]<<",";
        ostrm<<DataData[j]<<endl;
	}
	ostrm.close();
}

⌨️ 快捷键说明

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