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