如何用CFile和CFileDialog类编写一个MFC程序,目的是打开一个文件,不只是一个打开对话框。谢谢啦
展开全部
BOOL CMainDialog::GetOpenFilename(LPCTSTR lpszExt,LPCTSTR lpszFilter,CString &strFile)
{
BOOL result = FALSE;
CFileDialog *pFileDialog = new CFileDialog(TRUE,lpszExt,TEXT(""),OFN_FILEMUSTEXIST|OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,lpszFilter,this);
if(pFileDialog)
{
pFileDialog->m_ofn.lpstrTitle = TEXT("请指定需签字的文件...");
if(pFileDialog->DoModal() == IDOK)
{
result = TRUE;
strFile = pFileDialog->m_ofn.lpstrFile;
}
delete pFileDialog;
}
return result;
}
void CMainDialog::OnButtonSign()
{
CString strFile;
if(GetOpenFilename(TEXT("jpg"),TEXT("JPEG图片 (*.jpg; *.jpeg)|*.jpg; *.jpeg||"),strFile))
{
CFile file;
if(!file.Open(strFile,CFile::modeRead|CFile::shareDenyWrite))
{
MessageBox(TEXT("文件打开失败,请重试!"),TEXT("提示"),MB_ICONINFORMATION|MB_OK);
}
else
{
DWORD dwFileLength = file.GetLength();
if(dwFileLength > 600 * 1024)
MessageBox(TEXT("文件太大,请重新选择!"),TEXT("提示"),MB_ICONINFORMATION|MB_OK);
else if(dwFileLength == 0)
MessageBox(TEXT("文件内容为空,请重新选择!"),TEXT("提示"),MB_ICONINFORMATION|MB_OK);
else
{
LPSTR lpBuffer = (LPSTR)malloc(dwFileLength+10);
memcpy(lpBuffer,"CMD_SIGN ",10);
DWORD length,offset = 0;
while((length = file.ReadHuge(lpBuffer+10+offset,dwFileLength-offset)) > 0)
offset += length;
m_listenSocket.SendCommand(lpBuffer,dwFileLength+10);
free(lpBuffer);
}
file.Close();
}
}
}
这个就是MFC通过CFileDialog选择一个jpg文件,并通过CFile读取的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询