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

📄 dialogsdt.cpp

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

#include "stdafx.h"
#include "CVenus.h"
#include "DialogSDT.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDialogSDT dialog


CDialogSDT::CDialogSDT(CWnd* pParent /*=NULL*/)
	: CDialog(CDialogSDT::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDialogSDT)
	m_fBJ = 0.0f;
	m_fBL = 0.0f;
	m_fCFE = 0.0f;
	m_fPressLong = 0.0f;
	m_cstrCo = _T("");
	m_fDiameter = 0.0f;
	m_cstrModel = _T("");
	m_fPortion = 0.0f;
	m_fShotDepth = 0.0f;
	m_fPressDeep = 0.0f;
	//}}AFX_DATA_INIT
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}


void CDialogSDT::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDialogSDT)
	DDX_Control(pDX, IDC_LIST1, m_ctrlList);
	DDX_Control(pDX, IDC_BUTTON_SAVE, m_ctrlSave);
	DDX_Control(pDX, IDC_BUTTON_EDIT, m_ctrlEdit);
	DDX_Control(pDX, IDC_BUTTON_DEL, m_ctrlDel);
	DDX_Control(pDX, IDC_BUTTON_ADD, m_ctrlAdd);
	DDX_Text(pDX, IDC_EDIT_SHOOTBULLET_BJ, m_fBJ);
	DDX_Text(pDX, IDC_EDIT_SHOOTBULLET_BL, m_fBL);
	DDX_Text(pDX, IDC_EDIT_SHOOTBULLET_CFE, m_fCFE);
	DDX_Text(pDX, IDC_EDIT_PRESSLONG, m_fPressLong);
	DDX_Text(pDX, IDC_EDIT_SHOOTBULLET_CO, m_cstrCo);
	DDV_MaxChars(pDX, m_cstrCo, 40);
	DDX_Text(pDX, IDC_EDIT_SHOOTBULLET_DIAMETER, m_fDiameter);
	DDX_Text(pDX, IDC_EDIT_SHOOTBULLET_MODEL, m_cstrModel);
	DDV_MaxChars(pDX, m_cstrModel, 40);
	DDX_Text(pDX, IDC_EDIT_SHOOTBULLET_PORTION, m_fPortion);
	DDX_Text(pDX, IDC_EDIT_SHOOTBULLET_SHOTDEPTH, m_fShotDepth);
	DDX_Text(pDX, IDC_EDIT_SHOTBULLET_PRESSDEEP, m_fPressDeep);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDialogSDT, CDialog)
	//{{AFX_MSG_MAP(CDialogSDT)
	ON_BN_CLICKED(IDC_BUTTON_INITDATA, OnButtonInitdata)
	ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
	ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
	ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDialogSDT message handlers

void CDialogSDT::OnButtonInitdata() 
{
	// TODO: Add your control notification handler code here
	CFile fileHandle;
	STRUCTSDTHEAD fileHead;
	CString csPathName;
	CFileDialog fileDialog(
		TRUE,"Sdt",NULL,
		OFN_HIDEREADONLY ,
		"*.SDT|*.SDT|",
		NULL);
	fileDialog.m_ofn.lpstrInitialDir = ".\\sdt\\";
	if(fileDialog.DoModal ()==IDCANCEL)
	{return;}
	
	csPathName = fileDialog.GetPathName ();
	if(fileHandle.Open (
		csPathName,
		CFile::modeRead ))
	{
		fileHandle.Read (&fileHead,sizeof(STRUCTSDTHEAD));				//读文件头
		CString csTemp("[SDT]");
		if(csTemp.Compare (fileHead.strFileHead )!=0)
		{
			fileHandle.Close ();
			MessageBox("文件类型错误 !" ,"错误" ,MB_ICONHAND|MB_ICONSTOP|MB_ICONERROR);
			return;
		}

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

		char str[40];
		for(int i=0;i<fileHead.iNum ;i++)
		{
			fileHandle.Read (&m_structSDT[i],sizeof(STRUCTSDTTABLE));
		
			pitem.iItem=i;
			m_ctrlList.InsertItem (&pitem);
			m_ctrlList.SetItemText (i,0,m_structSDT[i].strModel );
			m_ctrlList.SetItemText (i,1,m_structSDT[i].strCo );
			sprintf(str,"%5.1f",m_structSDT[i].fShotDepth );
			m_ctrlList.SetItemText (i,2,str);
			sprintf(str,"%3.1f",m_structSDT[i].fDiameter);
			m_ctrlList.SetItemText (i,3, str);
			sprintf(str,"%3.1f",m_structSDT[i].fPressDeep );
			m_ctrlList.SetItemText (i,4, str);
			sprintf(str,"%2.3f",m_structSDT[i].fPressLong );
			m_ctrlList.SetItemText (i,5,str);
			sprintf(str,"%2.3f",m_structSDT[i].fCFE );
			m_ctrlList.SetItemText (i,6,str);
			sprintf(str,"%2.3f",m_structSDT[i].fPortion );
			m_ctrlList.SetItemText (i,7,str);
			sprintf(str,"%5.1f",m_structSDT[i].fBL );
			m_ctrlList.SetItemText (i,8,str);
			sprintf(str,"%5.1f",m_structSDT[i].fBJ );
			m_ctrlList.SetItemText (i,9,str);
		}
		m_cstrModel = m_structSDT[0].strModel ;
		m_cstrCo = m_structSDT[0].strCo ;
		m_fShotDepth = m_structSDT[0].fShotDepth ;
		m_fDiameter = m_structSDT[0].fDiameter ;
		m_fPressDeep = m_structSDT[0].fPressDeep ;
		m_fPressLong = m_structSDT[0].fPressLong ;
		m_fCFE = m_structSDT[0].fCFE ;
		m_fPortion = m_structSDT[0].fPortion ;
		m_fBL = m_structSDT[0].fBL ;
		m_fBJ = m_structSDT[0].fBJ ;

		m_ctrlAdd.EnableWindow ();
		m_ctrlDel.EnableWindow ();
		m_ctrlEdit.EnableWindow ();
		m_ctrlSave.EnableWindow ();
		UpdateData(FALSE);
	}
	else
	{
		MessageBox("文件打开错误或文件不存在 !" ,"错误" ,MB_ICONHAND|MB_ICONSTOP|MB_ICONERROR);
		return;
	}
	fileHandle.Close ();	
}

BOOL CDialogSDT::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	// TODO: Add extra initialization here
	UpdateData(TRUE);
	m_ctrlList.InsertColumn (0,"射孔弹型号",LVCFMT_LEFT ,200,0);
	m_ctrlList.InsertColumn (1,"厂家",LVCFMT_LEFT ,60,1);
	m_ctrlList.InsertColumn (2,"穿深",LVCFMT_LEFT ,60,2);
	m_ctrlList.InsertColumn (3,"孔径",LVCFMT_LEFT ,60,3);
	m_ctrlList.InsertColumn (4,"压厚",LVCFMT_LEFT ,60,4);
	m_ctrlList.InsertColumn (5,"压程",LVCFMT_LEFT ,60,5);
	m_ctrlList.InsertColumn (6,"CFE",LVCFMT_LEFT ,60,6);
	m_ctrlList.InsertColumn (7,"Φ",LVCFMT_LEFT ,60,7);
	m_ctrlList.InsertColumn (8,"BL",LVCFMT_LEFT ,60,8);
	m_ctrlList.InsertColumn (9,"BJ",LVCFMT_LEFT ,60,9);
	UpdateData(FALSE);	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDialogSDT::OnButtonSave() 
{
	// TODO: Add your control notification handler code here
	CString csPathName;
	CFileDialog fileDialog(
		FALSE,"SDT","DATA.SDT",
		OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		"*.SDT|*.SDT|",
		NULL);
	if(fileDialog.DoModal ()==IDCANCEL)
	{return;}
	csPathName = fileDialog.GetPathName ();
	CFile fileHandle;
	STRUCTSDTHEAD fileHead;
	if(fileHandle.Open (
		csPathName,
		CFile::modeCreate | CFile::modeWrite ))
	{
		sprintf(fileHead.strFileHead ,"%s" ,"[SDT]");
		fileHead.iNum = m_ctrlList.GetItemCount ();
		fileHandle.Write (&fileHead,sizeof(STRUCTSDTHEAD));
		for(int i = 0 ;i<fileHead.iNum ;i++ )
		{
			fileHandle.Write (&m_structSDT[i],sizeof(STRUCTSDTTABLE));
		}
		MessageBox("文件保存完毕 !" ,"工程信息" );
	}
	else
	{
		MessageBox("文件打开错误 !" ,"错误" ,MB_ICONHAND|MB_ICONSTOP|MB_ICONERROR);
		return;
	}	
}

void CDialogSDT::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int iTemp;
	iTemp = m_ctrlList.GetSelectionMark ();

	if(iTemp>=0)
	{
		UpdateData(TRUE);
		m_cstrModel = m_structSDT[iTemp].strModel ;
		m_cstrCo = m_structSDT[iTemp].strCo ;
		m_fShotDepth = m_structSDT[iTemp].fShotDepth ;
		m_fDiameter = m_structSDT[iTemp].fDiameter ;
		m_fPressDeep = m_structSDT[iTemp].fPressDeep ;
		m_fPressLong = m_structSDT[iTemp].fPressLong ;
		m_fCFE = m_structSDT[iTemp].fCFE ;
		m_fPortion = m_structSDT[iTemp].fPortion ;
		m_fBL = m_structSDT[iTemp].fBL ;
		m_fBJ = m_structSDT[iTemp].fBJ ;
		UpdateData(FALSE);
	}	
	*pResult = 0;
}

void CDialogSDT::OnButtonAdd() 
{
	// TODO: Add your control notification handler code here
	CString csTemp;
	UpdateData(TRUE);
	csTemp = m_cstrModel;
	if(!csTemp.IsEmpty ())
	{	
		int iTemp = m_ctrlList.GetItemCount ();
		for(int i=0;i<iTemp;i++)
		{
			if(csTemp.Compare (m_structSDT[i].strModel) == 0)
			{
				MessageBox("该型号已经存在 !" ,"错误" ,MB_ICONHAND|MB_ICONSTOP|MB_ICONERROR);
				UpdateData(FALSE);
				return;
			}
		}
		sprintf(m_structSDT[iTemp].strModel ,"%s" ,m_cstrModel );
		sprintf(m_structSDT[iTemp].strCo ,"%s",m_cstrCo );
		m_structSDT[iTemp].fDiameter = m_fDiameter;
		m_structSDT[iTemp].fShotDepth = m_fShotDepth;
		m_structSDT[iTemp].fPressDeep = m_fPressDeep;
		m_structSDT[iTemp].fPressLong = m_fPressLong;
		m_structSDT[iTemp].fCFE = m_fCFE;
		m_structSDT[iTemp].fPortion = m_fPortion;
		m_structSDT[iTemp].fBJ = m_fBJ;
		m_structSDT[iTemp].fBL = m_fBL;
//////////
		LVITEM pitem;
		pitem.mask=LVIF_TEXT;
		pitem.state=0;
		pitem.stateMask=0;
		pitem.iItem=iTemp;
		pitem.iSubItem=0;
		pitem.pszText="";

		m_ctrlList.InsertItem (&pitem);
		m_ctrlList.SetItemText (iTemp,0,m_structSDT[i].strModel );
		m_ctrlList.SetItemText (iTemp,1,m_structSDT[i].strCo );
		char str[20];
		sprintf(str,"%5.1f",m_structSDT[i].fShotDepth );
		m_ctrlList.SetItemText (i,2,str);
		sprintf(str,"%3.1f",m_structSDT[i].fDiameter);
		m_ctrlList.SetItemText (i,3, str);
		sprintf(str,"%3.1f",m_structSDT[i].fPressDeep );
		m_ctrlList.SetItemText (i,4, str);
		sprintf(str,"%2.3f",m_structSDT[i].fPressLong );
		m_ctrlList.SetItemText (i,5,str);
		sprintf(str,"%2.3f",m_structSDT[i].fCFE );
		m_ctrlList.SetItemText (i,6,str);
		sprintf(str,"%2.3f",m_structSDT[i].fPortion );
		m_ctrlList.SetItemText (i,7,str);
		sprintf(str,"%5.1f",m_structSDT[i].fBL );
		m_ctrlList.SetItemText (i,8,str);
		sprintf(str,"%5.1f",m_structSDT[i].fBJ );
		m_ctrlList.SetItemText (i,9,str);
	}
	else
	{
		MessageBox("请输入射孔弹型号 !" ,"错误" ,MB_ICONHAND|MB_ICONSTOP|MB_ICONERROR);
	}
	UpdateData(FALSE);	
}

void CDialogSDT::OnButtonDel() 
{
	// TODO: Add your control notification handler code here
	int iTemp;
	iTemp = m_ctrlList.GetSelectionMark ();
	if(iTemp <0 ) return;
	if(MessageBox("确定删除 ?","信息",MB_ICONQUESTION|MB_OKCANCEL)==IDCANCEL)
	{return;}
	m_ctrlList.DeleteItem (iTemp);
	for(int i=iTemp ;i<255;i++)
	{
		m_structSDT[i] = m_structSDT[i+1];
	}
	UpdateData(TRUE);
	m_cstrModel = m_structSDT[0].strModel ;
	m_cstrCo = m_structSDT[0].strCo ;
	m_fShotDepth = m_structSDT[0].fShotDepth ;
	m_fDiameter = m_structSDT[0].fDiameter ;
	m_fPressDeep = m_structSDT[0].fPressDeep ;
	m_fPressLong = m_structSDT[0].fPressLong ;
	m_fCFE = m_structSDT[0].fCFE ;
	m_fPortion = m_structSDT[0].fPortion ;
	m_fBL = m_structSDT[0].fBL ;
	m_fBJ = m_structSDT[0].fBJ ;
	
	m_ctrlList.SetSelectionMark (-1);
	UpdateData(FALSE);	
}

void CDialogSDT::OnButtonEdit() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int iTemp;
	iTemp = m_ctrlList.GetSelectionMark ();
	if(iTemp <0 ) return;

	sprintf(m_structSDT[iTemp].strModel ,"%s" ,m_cstrModel );
	sprintf(m_structSDT[iTemp].strCo ,"%s",m_cstrCo );
	m_structSDT[iTemp].fDiameter = m_fDiameter;
	m_structSDT[iTemp].fShotDepth = m_fShotDepth;
	m_structSDT[iTemp].fPressDeep = m_fPressDeep;
	m_structSDT[iTemp].fPressLong = m_fPressLong;
	m_structSDT[iTemp].fCFE = m_fCFE;
	m_structSDT[iTemp].fPortion = m_fPortion;
	m_structSDT[iTemp].fBJ = m_fBJ;
	m_structSDT[iTemp].fBL = m_fBL;

	m_ctrlList.DeleteItem (iTemp);
	LVITEM pitem;
	pitem.mask=LVIF_TEXT;
	pitem.state=0;
	pitem.stateMask=0;
	pitem.iItem=iTemp;
	pitem.iSubItem=0;
	pitem.pszText="";

	m_ctrlList.InsertItem (&pitem);
	m_ctrlList.SetItemText (iTemp,0,m_structSDT[iTemp].strModel );
	m_ctrlList.SetItemText (iTemp,1,m_structSDT[iTemp].strCo );
	char str[20];
	sprintf(str,"%5.1f",m_structSDT[iTemp].fShotDepth );
	m_ctrlList.SetItemText (iTemp,2,str);
	sprintf(str,"%3.1f",m_structSDT[iTemp].fDiameter);
	m_ctrlList.SetItemText (iTemp,3, str);
	sprintf(str,"%3.1f",m_structSDT[iTemp].fPressDeep );
	m_ctrlList.SetItemText (iTemp,4, str);
	sprintf(str,"%2.3f",m_structSDT[iTemp].fPressLong );
	m_ctrlList.SetItemText (iTemp,5,str);
	sprintf(str,"%2.3f",m_structSDT[iTemp].fCFE );
	m_ctrlList.SetItemText (iTemp,6,str);
	sprintf(str,"%2.3f",m_structSDT[iTemp].fPortion );
	m_ctrlList.SetItemText (iTemp,7,str);
	sprintf(str,"%5.1f",m_structSDT[iTemp].fBL );
	m_ctrlList.SetItemText (iTemp,8,str);
	sprintf(str,"%5.1f",m_structSDT[iTemp].fBJ );
	m_ctrlList.SetItemText (iTemp,9,str);

	m_ctrlList.SetSelectionMark (-1);
	UpdateData(FALSE);	
}

⌨️ 快捷键说明

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