📄 controlview.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 + -