VC++ MFC 读文件 共享为例

来源:百度知道 编辑:UC知道 时间:2024/06/16 18:37:07
我做了两个程序,一个是普通Vc程序,一个是MFC,VC程序会以30Hz的频率往一个在D盘的txt文件里存入三个数据比如“50 34 22”另外一个也以30Hz的频率读取txt中的数据,可过不了多一会,便会出现“共享为例”的对话框,再过一会就会蓝屏,我想可能是两程序同时打开一个文件导致的,以下是两个程序的部分代码:
VC的:
x=(100+head_pose.head_pos.x*100)/2;
y=(100+rad2deg(head_pose.head_rot.y_rads))/2;
z= head_pose.head_pos.z*100;

ofstream fout("D:\\pos.txt"); fout<<x<<" "<<y<<" "<<z<<endl; //写到磁盘
fout.close(); //关闭文件

MFC的:

CFile file("d://pos.txt",CFile::modeRead);
char read[10000];

file.Read(read,10000);

请问有没有能用在MFC中的函数来判断要打开的文件是否打开,或者其他解决办法,谢谢。

方法一:

CFile file;
if ( file.Open("c://data.txt",CFile::modeRead))
{
AfxMessageBox("OK");
file.Close();
} else {
AfxMessageBox("文件已被打开或打开失败!");
}

方法二:

HANDLE hFile;
hFile = CreateFile("d://pos.txt",GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_DELETE,NULL,OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);

if(hFile == INVALID_HANDLE_VALUE )
{
AfxMessageBox("该文件已被打开或打开失败!")
return 0;
}
.....
CloseHandle(hFile);