MFC读取TXT文件,写入编辑框

2024-12-05 07:39:36
推荐回答(5个)
回答(1):

FILE* pfile = fopen( "c:\\a.txt", "r" ); // 打开文件
TCHAR szBuf[MAX_PATH];
fread( szBuf, 1, MAX_PATH, pfile ); // 读取文件
GetDlgItem( ID_EDIT )->SetWindowText( szBuf ); // 写控件
fclose( pfile ); // 关闭文件

补充:

改成GetPathName

void CSerialKF1View::OnFileOpen()
{
// TODO: Add your command handler code here
CFileDialog fileDlg(TRUE);
if(fileDlg.DoModal() == IDOK)
{
CString str = fileDlg.GetPathName();
FILE* pfile = fopen( str, "r" ); // 打开文件
TCHAR szBuf[MAX_PATH];
fread( szBuf, 1, MAX_PATH, pfile ); // 读取文件
GetDlgItem( IDC_SEND )->SetWindowText( szBuf ); // 写控件
fclose( pfile ); // 关闭文件
}

}

回答(2):

CFileDialog fileDlg(TRUE);
if(fileDlg.DoModal() == IDOK)
{
CString str = fileDlg.GetFilePath();

}
这个就是你要的打开文件的对话框.
得到路径后其他的参考楼上的代码.

回答(3):

CFile file;
if(!file.Open(filename,CFile::modeCreate|CFile::modeWrite))
{
CString msg("Can't open "+filename+"\nCheck the filename.");
MessageBox(NULL,msg,"Stock",MB_ICONEXCLAMATION|MB_OK);
}
else
{
// get and lock handle to edit text
HANDLE handle=pedit->GetHandle();
LPSTR buffer=(LPSTR)LocalLock(handle);

// write edit text to file, close and unlock
int length=pedit->GetWindowTextLength();
file.Write(buffer,length);
file.Close();
LocalUnlock(handle);

//pedit->SetFocus();
}
这些程序可用,我一直在用

回答(4):

GetPathName();
--------------------
MAX_PATH太小了,才256,也就是windows下路径的最大长度

回答(5):

CFileDialog fileDlg(TRUE);
if(fileDlg.DoModal() == IDOK)
{
CString str;
CFile f;
f.Open(fileDlg.GetFileName(),CFile::modeReadWrite);
f.Read(str.GetBuffer(f.GetLength()),f.GetLength());
f.close();
GetDlgItem( IDC_SEND )->SetWindowText( str);
}