📄 fileiodlg.cpp
字号:
strText1.Format("%d",dlg.m_nFileSize);
strText2.Format("%d",dlg.m_nFileUser);
strText3.Format("%d",dlg.m_nFileIntegrity);
m_lstDRFileDescriptions.SetItemText(Index,2,strText1);
m_lstDRFileDescriptions.SetItemText(Index,3,strText2);
m_lstDRFileDescriptions.SetItemText(Index,4,strText3);
m_bNeedSave = true;
}
}
BOOL CFileIODlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_lstDRFileDescriptions.InsertColumn(0, "Header File Path", LVCFMT_LEFT, 300);
m_lstDRFileDescriptions.InsertColumn(1, "Header File Name", LVCFMT_LEFT, 150);
m_lstDRFileDescriptions.InsertColumn(2, "Header File Size", LVCFMT_LEFT, 100);
m_lstDRFileDescriptions.InsertColumn(3, "Header File User defined", LVCFMT_LEFT, 100);
m_lstDRFileDescriptions.InsertColumn(4, "Header File Integrity Key", LVCFMT_LEFT, 100);
memset(&m_FileData, 0, sizeof(DRFileFormat));
LoadData();
UpdateData(false);
m_btnDelete.EnableWindow(false);
m_btnEdit.EnableWindow(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFileIODlg::SaveData()
{
UpdateData(true);
// Blank the struct
memset(&m_FileData, 0, sizeof(DRFileFormat));
m_FileData.nFileLength = m_nFileLength;
m_FileData.nFileVersion = m_nFileVersion;
strcpy(m_FileData.szDescText, m_strDescriptive);
strcpy(m_FileData.szPartNo, m_strPartNumber);
m_FileData.nFlags = (short) m_nMediaFlags;
m_FileData.nMediaType = (short) m_nMediaType;
m_FileData.nHeaderRecCnt = m_nNumberHeaders;
m_FileData.nHeaderSize = m_nHeaderSize;
if(m_FileData.cHeaderRecDesc)
delete []m_FileData.cHeaderRecDesc;
m_FileData.cHeaderRecDesc = new DRHeaderDescriptions[m_FileData.nHeaderRecCnt];
memset(m_FileData.cHeaderRecDesc, 0, sizeof(DRHeaderDescriptions)*m_FileData.nHeaderRecCnt);
for(unsigned int i=0; i < m_FileData.nHeaderRecCnt; i++)
{
strcpy(m_FileData.cHeaderRecDesc[i].szHdrFilePath, m_lstDRFileDescriptions.GetItemText(i, 0 ) );
strcpy(m_FileData.cHeaderRecDesc[i].szFileName, m_lstDRFileDescriptions.GetItemText(i, 1 ));
CString strTemp = m_lstDRFileDescriptions.GetItemText(i, 2 );
m_FileData.cHeaderRecDesc[i].nFileSize = StrToInt(strTemp);
strTemp = m_lstDRFileDescriptions.GetItemText(i, 3 );
m_FileData.cHeaderRecDesc[i].nUserDef = StrToInt(strTemp);
strTemp = m_lstDRFileDescriptions.GetItemText(i, 4 );
m_FileData.cHeaderRecDesc[i].nIntegKey = StrToInt(strTemp);
}
m_FileData.nPnHash = m_nPnHash;
m_FileData.nFileCrc = m_nFileCrc;
}
// Load the struct data into the controls variables
void CFileIODlg::LoadData()
{
m_bCheckValidate = true;
m_nFileLength = m_FileData.nFileLength ;
m_nFileVersion = m_FileData.nFileVersion ;
m_strDescriptive = m_FileData.szDescText ;
m_strPartNumber = m_FileData.szPartNo ;
m_nMediaFlags = m_FileData.nFlags ;
m_nMediaType = m_FileData.nMediaType ;
m_nNumberHeaders = m_FileData.nHeaderRecCnt ;
m_nHeaderSize = m_FileData.nHeaderSize ;
m_lstDRFileDescriptions.DeleteAllItems();
for(unsigned int i=0; i < m_FileData.nHeaderRecCnt; i++)
{
CString strText1,strText2, strText3;
strText1.Format("%ld",m_FileData.cHeaderRecDesc[i].nFileSize);
strText2.Format("%ld",m_FileData.cHeaderRecDesc[i].nUserDef);
strText3.Format("%ld",m_FileData.cHeaderRecDesc[i].nIntegKey);
m_lstDRFileDescriptions.InsertItem(i,m_FileData.cHeaderRecDesc[i].szHdrFilePath);
m_lstDRFileDescriptions.SetItemText(i,1,m_FileData.cHeaderRecDesc[i].szFileName);
m_lstDRFileDescriptions.SetItemText(i,2,strText1);
m_lstDRFileDescriptions.SetItemText(i,3,strText2);
m_lstDRFileDescriptions.SetItemText(i,4,strText3);
}
m_edtFileLength.SetReadOnly(m_bCheckValidate);
m_edtNumberHeaders.SetReadOnly(m_bCheckValidate);
m_edtHeaderSize.SetReadOnly(m_bCheckValidate);
m_nPnHash = m_FileData.nPnHash ;
m_nFileCrc = m_FileData.nFileCrc ;
CalculateHeaderSize();
CalculateFileLength();
UpdateData(false);
}
bool CFileIODlg::WriteFile(CString strFullName)
{
CFile DrFile;
if(!DrFile.Open(strFullName, CFile::modeWrite | CFile::modeCreate))
return false;
DrFile.Write(&m_FileData.nFileLength, sizeof(int));
DrFile.Write(&m_FileData.nFileVersion, sizeof(int));
DrFile.Write(m_FileData.szDescText, sizeof(char)*80);
DrFile.Write(m_FileData.szPartNo, sizeof(char)*40);
DrFile.Write(&m_FileData.nFlags, sizeof(short));
DrFile.Write(&m_FileData.nMediaType, sizeof(short));
DrFile.Write(&m_FileData.nHeaderRecCnt, sizeof(int));
DrFile.Write(&m_FileData.nHeaderSize, sizeof(int));
for(UINT i=0; i<m_FileData.nHeaderRecCnt; i++)
{
DrFile.Write( m_FileData.cHeaderRecDesc[i].szHdrFilePath, sizeof(char)*88);
DrFile.Write(m_FileData.cHeaderRecDesc[i].szFileName, sizeof(char)*32);
DrFile.Write(&m_FileData.cHeaderRecDesc[i].nFileSize, sizeof(int));
DrFile.Write(&m_FileData.cHeaderRecDesc[i].nUserDef, sizeof(int));
DrFile.Write(&m_FileData.cHeaderRecDesc[i].nIntegKey, sizeof(int));
}
DrFile.Write(&m_FileData.nPnHash, sizeof(int));
DrFile.Write(&m_FileData.nFileCrc, sizeof(int));
DrFile.Close();
m_bNeedSave = false;
return true;
}
bool CFileIODlg::ReadFile(CString strFullName)
{
m_bCheckValidate = true;
//m_strFileFullName = strFullName;
CFile DrFile;
if(!DrFile.Open(strFullName, CFile::modeRead))
return false;
TRY
{
DrFile.Read(&m_FileData.nFileLength, sizeof(int));
DrFile.Read(&m_FileData.nFileVersion, sizeof(int));
DrFile.Read(m_FileData.szDescText, sizeof(char)*80);
DrFile.Read(m_FileData.szPartNo, sizeof(char)*40);
DrFile.Read(&m_FileData.nFlags, sizeof(short));
DrFile.Read(&m_FileData.nMediaType, sizeof(short));
DrFile.Read(&m_FileData.nHeaderRecCnt, sizeof(int));
DrFile.Read(&m_FileData.nHeaderSize, sizeof(int));
m_FileData.cHeaderRecDesc = new DRHeaderDescriptions[m_FileData.nHeaderRecCnt];
memset(m_FileData.cHeaderRecDesc, 0, sizeof(DRHeaderDescriptions)*m_FileData.nHeaderRecCnt);
for(unsigned int i=0; i < m_FileData.nHeaderRecCnt; i++)
{
DrFile.Read(m_FileData.cHeaderRecDesc[i].szHdrFilePath, sizeof(char)*88);
DrFile.Read(m_FileData.cHeaderRecDesc[i].szFileName, sizeof(char)*32);
DrFile.Read(&m_FileData.cHeaderRecDesc[i].nFileSize, sizeof(int));
DrFile.Read(&m_FileData.cHeaderRecDesc[i].nUserDef, sizeof(int));
DrFile.Read(&m_FileData.cHeaderRecDesc[i].nIntegKey, sizeof(int));
}
DrFile.Read(&m_FileData.nPnHash, sizeof(int));
DrFile.Read(&m_FileData.nFileCrc, sizeof(int));
}
CATCH(CFileException,e)
{
AfxMessageBox("It is not a good DR file.");
}
CATCH(CMemoryException, e)
{
AfxMessageBox("It is not a good DR file.");
m_FileData.nHeaderRecCnt = 0;
}
END_CATCH
DrFile.Close();
return true;
}
void CFileIODlg::CalculateFileLength()
{
if(m_bCheckValidate)
m_nFileLength = m_nHeaderSize * m_nNumberHeaders + 148;
}
void CFileIODlg::CalculateHeaderSize()
{
if(m_bCheckValidate)
{
m_nNumberHeaders = m_lstDRFileDescriptions.GetItemCount();
m_nHeaderSize = 132;
}
}
UINT CFileIODlg::StrToInt(CString strSrc)
{
int len =strSrc.GetLength();
UINT number = 0;
for(int i = 0; i< len; i++)
{
number = number*10 + (strSrc[i] - '0');
}
return number;
}
void CFileIODlg::OnCheckValidate()
{
// TODO: Add your control notification handler code here
UpdateData(true);
m_edtFileLength.SetReadOnly(m_bCheckValidate);
m_edtNumberHeaders.SetReadOnly(m_bCheckValidate);
m_edtHeaderSize.SetReadOnly(m_bCheckValidate);
if(m_bCheckValidate)
{
CalculateHeaderSize();
CalculateFileLength();
}
UpdateData(false);
}
void CFileIODlg::OnClickLstDrFileDescriptors(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int SelectCount = m_lstDRFileDescriptions.GetSelectedCount();
if(SelectCount > 0)
{
m_btnDelete.EnableWindow(true);
if( SelectCount == 1)
m_btnEdit.EnableWindow(true);
else
m_btnEdit.EnableWindow(false);
}
else
{
m_btnDelete.EnableWindow(false);
m_btnEdit.EnableWindow(false);
}
*pResult = 0;
}
void CFileIODlg::OnSelchangeCmbMediaType()
{
// TODO: Add your control notification handler code here
m_bNeedSave = true;
}
void CFileIODlg::OnChangeEdtDescriptiveText()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
m_bNeedSave = true;
}
void CFileIODlg::OnChangeEdtFileCrc()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
m_bNeedSave = true;
}
void CFileIODlg::OnChangeEdtFileVersion()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
m_bNeedSave = true;
}
void CFileIODlg::OnChangeEdtMediaFlags()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
m_bNeedSave = true;
}
void CFileIODlg::OnChangeEdtPartNumber()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
m_bNeedSave = true;
}
void CFileIODlg::OnChangeEdtPnHash()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
m_bNeedSave = true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -