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

📄 fileiodlg.cpp

📁 我要下载源代码我要源代码我要下载代码我要下载源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -