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

📄 textreportview.cpp

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

#include "stdafx.h"
#include "cvenus.h"
#include "TextReportView.h"
#include	"MainFrm.h"
#include "resource.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTextReportView

IMPLEMENT_DYNCREATE(CTextReportView, CFormView)

CTextReportView::CTextReportView()
	: CFormView(CTextReportView::IDD)
{
	//{{AFX_DATA_INIT(CTextReportView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_iSelected = 0;
	m_bState = FALSE;
}

CTextReportView::~CTextReportView()
{
}

void CTextReportView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTextReportView)
	DDX_Control(pDX, IDC_LIST_SELECTED, m_ctrlSelected);
	DDX_Control(pDX, IDC_LIST, m_ctrlList);
	DDX_Control(pDX, IDC_WORDCTRL, m_ctrlWord);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTextReportView, CFormView)
	ON_WM_CONTEXTMENU()
	//{{AFX_MSG_MAP(CTextReportView)
	ON_WM_CREATE()
	ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
	ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
	ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)
	ON_BN_CLICKED(ID_MAKEREPORT, OnMakereport)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTextReportView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CTextReportView message handlers

int CTextReportView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	GetParentFrame()->SetWindowText(_T("射孔设计输出到WORD文档"));

	CMainFrame*	pMainWnd = (CMainFrame*)AfxGetMainWnd();
	m_iNum = pMainWnd->m_structShotParaBase.iNum ;
	for(int iTemp=0;iTemp<384;iTemp++)
	{
		m_structList[iTemp] = pMainWnd->m_structShotParaSelect[iTemp];
	}
	m_structSelectedPara = pMainWnd->m_structSelectedPara;
	m_structMinusPressResult = pMainWnd->m_structMinusPressResult;
	m_structSandPressDesign = pMainWnd->m_structSandPressDesign;
	m_cstrWellName = pMainWnd->m_structWellInfo.strWellName ;
	m_fWater = pMainWnd->m_structMinusPressPara.fWater ;
	if(pMainWnd->m_structShotParaSelect[pMainWnd->m_structShotParaBase.iNum-1].fProPer>0.8)
		m_bState = TRUE;
	
	return 0;
}

void CTextReportView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
	{
		m_ctrlList.DeleteColumn (0);
		m_ctrlSelected.DeleteColumn (0);
	}
	m_ctrlList.InsertColumn (0,"序号",LVCFMT_LEFT ,40,0);
	if(m_bState)
		m_ctrlList.InsertColumn (1,"相对流体压降",LVCFMT_LEFT ,60,1);
	else
		m_ctrlList.InsertColumn (1,"预测产率比",LVCFMT_LEFT ,60,1);
	m_ctrlList.InsertColumn (2,"型号",LVCFMT_LEFT ,200,2);
	m_ctrlList.InsertColumn (3,"相位角度",LVCFMT_LEFT ,100,3);
	m_ctrlList.InsertColumn (4,"孔密",LVCFMT_LEFT ,60,4);
	m_ctrlList.InsertColumn (5,"穿深",LVCFMT_LEFT ,60,5);
	m_ctrlList.InsertColumn (6,"孔径",LVCFMT_LEFT ,60,6);
	m_ctrlList.InsertColumn (7,"套管强度降低系数(%)",LVCFMT_LEFT ,100,7);
	m_ctrlSelected.InsertColumn (0,"序号",LVCFMT_LEFT ,40,0);
	if(m_bState)
		m_ctrlSelected.InsertColumn (1,"相对流体压降",LVCFMT_LEFT ,60,1);
	else
		m_ctrlSelected.InsertColumn (1,"预测产率比",LVCFMT_LEFT ,60,1);
	m_ctrlSelected.InsertColumn (2,"型号",LVCFMT_LEFT ,200,2);
	m_ctrlSelected.InsertColumn (3,"相位角度",LVCFMT_LEFT ,100,3);
	m_ctrlSelected.InsertColumn (4,"孔密",LVCFMT_LEFT ,60,4);
	m_ctrlSelected.InsertColumn (5,"穿深",LVCFMT_LEFT ,60,5);
	m_ctrlSelected.InsertColumn (6,"孔径",LVCFMT_LEFT ,60,6);
	m_ctrlSelected.InsertColumn (7,"套管强度降低系数(%)",LVCFMT_LEFT ,100,7);

	m_ctrlList.DeleteAllItems ();
	m_ctrlSelected.DeleteAllItems ();
	LVITEM pitem;
	pitem.mask=LVIF_TEXT;
	pitem.state=0;
	pitem.stateMask=0;
	pitem.iSubItem=0;
	pitem.pszText="";

	char strTemp[20];
	for(i=0;i<m_iNum;i++)
	{
		pitem.iItem=i;
		m_ctrlList.InsertItem (&pitem);
		sprintf(strTemp,"%d",i+1);
		m_ctrlList.SetItemText (i,0,strTemp);
		sprintf(strTemp,"%2.3f",m_structList[i].fProPer );
		m_ctrlList.SetItemText (i,1,strTemp);
		m_ctrlList.SetItemText (i,2,m_structList[i].strModel );
		sprintf(strTemp,"%4.1f",m_structList[i].fAngle );
		m_ctrlList.SetItemText (i,3,strTemp);
		sprintf(strTemp,"%4.0f",m_structList[i].fShotDen );
		m_ctrlList.SetItemText (i,4,strTemp);
		sprintf(strTemp,"%5.2f",m_structList[i].fShotDepth );
		m_ctrlList.SetItemText (i,5,strTemp);
		sprintf(strTemp,"%3.2f",m_structList[i].fDiameter );
		m_ctrlList.SetItemText (i,6,strTemp);
		sprintf(strTemp,"%5.2f",m_structList[i].fPara );
		m_ctrlList.SetItemText (i,7,strTemp);
	}
	UpdateData(FALSE);
	
}

void CTextReportView::OnButtonAdd() 
{
	// TODO: Add your control notification handler code here
	UpdateData();

	LVITEM pitem;
	pitem.mask=LVIF_TEXT;
	pitem.state=0;
	pitem.stateMask=0;
	pitem.iSubItem=0;
	pitem.pszText="";
	pitem.iItem = m_iSelected+1;
	m_ctrlSelected.InsertItem (&pitem);

	int iTemp = m_ctrlList.GetSelectionMark();
	m_structSelected[m_iSelected] = m_structList[iTemp];
	char strTemp[20];
	sprintf(strTemp,"%d",iTemp+1);
	m_ctrlSelected.SetItemText (m_iSelected,0,strTemp);
	sprintf(strTemp,"%2.3f",m_structSelected[m_iSelected].fProPer );
	m_ctrlSelected.SetItemText (m_iSelected,1,strTemp);
	m_ctrlSelected.SetItemText (m_iSelected,2,m_structSelected[m_iSelected].strModel );
	sprintf(strTemp,"%4.1f",m_structSelected[m_iSelected].fAngle );
	m_ctrlSelected.SetItemText (m_iSelected,3,strTemp);
	sprintf(strTemp,"%4.0f",m_structSelected[m_iSelected].fShotDen );
	m_ctrlSelected.SetItemText (m_iSelected,4,strTemp);
	sprintf(strTemp,"%5.2f",m_structSelected[m_iSelected].fShotDepth );
	m_ctrlSelected.SetItemText (m_iSelected,5,strTemp);
	sprintf(strTemp,"%3.2f",m_structSelected[m_iSelected].fDiameter );
	m_ctrlSelected.SetItemText (m_iSelected,6,strTemp);
	sprintf(strTemp,"%5.2f",m_structSelected[m_iSelected].fPara );
	m_ctrlSelected.SetItemText (m_iSelected,7,strTemp);
	UpdateData(FALSE);

	m_iSelected++;
	
}

void CTextReportView::OnButtonDel() 
{
	// TODO: Add your control notification handler code here
	int iTemp = m_ctrlSelected.GetSelectionMark();
	m_ctrlSelected.DeleteItem(iTemp);
	for(int i=iTemp;i<m_iSelected;i++)
		m_structSelected[i] = m_structSelected[i+1];
	m_iSelected--;
	
}

void CTextReportView::OnButtonClear() 
{
	// TODO: Add your control notification handler code here
	m_ctrlSelected.DeleteAllItems ();
	m_iSelected = 0;
	
}

void CTextReportView::OnMakereport() 
{
	// TODO: Add your control notification handler code here
	if(m_iSelected < 1)
	{
		MessageBox("请至少选择一种射孔弹","信息");
		return;
	}


	CFileDialog fileDialog(
		FALSE,"Doc",NULL,
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"Word 文档(*.Doc)|*.Doc|",
		NULL);

	if(fileDialog.DoModal ()==IDCANCEL)
		return;	
	CWaitCursor wait;
	CString cstrTemp;
	int iLocat = 0;
	LPCTSTR lpStr;
	char str[MAX_PATH];
//	GetModuleFileName(NULL, str, MAX_PATH);
//	cstrTemp = str;

//	Lzj changed it , 2003/9/9
//	cstrTemp = cstrTemp.Left(cstrTemp.GetLength() - 7) + "Template.dot"; 
	cstrTemp = ((CCVenusApp*)AfxGetApp())->m_strAppPath + _T("\\系统参数\\Template.dot");
	sprintf(str,"%s",cstrTemp);
	lpStr = str;
	m_ctrlWord.SetM_sTemplateName (lpStr);
	cstrTemp = fileDialog.GetPathName();
	sprintf(str,"%s",cstrTemp);
	lpStr = str;
	m_ctrlWord.SetM_sDocName (lpStr);

	m_ctrlWord.CreateTemplate ();

	m_ctrlWord.SetRange (iLocat,iLocat);
	cstrTemp = m_cstrWellName + "射孔优化设计结果表";
	sprintf(str,"%s",cstrTemp);
	lpStr = str;
	m_ctrlWord.TypeText (lpStr);
	m_ctrlWord.TypeParagraph ();
	iLocat += cstrTemp.GetLength ();

	m_ctrlWord.SetRange (iLocat,iLocat);	//回车键
	m_ctrlWord.TypeParagraph ();
	iLocat += 1;

	m_ctrlWord.SetRange (iLocat,iLocat);	//回车键
	m_ctrlWord.TypeParagraph ();
	iLocat += 1;

	m_ctrlWord.SetRange (iLocat,iLocat);
	cstrTemp = "一、射孔方案设计";
	sprintf(str,"%s",cstrTemp);
	lpStr = str;
	m_ctrlWord.TypeText (lpStr);
	m_ctrlWord.TypeParagraph ();
	iLocat += cstrTemp.GetLength ();
	
	m_ctrlWord.SetRange (iLocat,iLocat);	//Table1
	m_ctrlWord.CreateTable (m_iSelected+1,9);
	iLocat += 10*(m_iSelected+1);

⌨️ 快捷键说明

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