如何用CFile和CFileDialog类编写一个MFC程序,目的是打开一个文件,不只是一个打开对话框。谢谢啦

 我来答
intehel
2014-11-24 · TA获得超过1293个赞
知道大有可为答主
回答量:1601
采纳率:100%
帮助的人:1774万
展开全部
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读取的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式