程序段运行后,编译器提示"对一未命名文件的存取被拒绝"请问错误出再那里?
程序如下
void CMainFrame::OnMenuDisplay()
{
CClientDC dc(this);
CFile cFileBmp;
CFile cFileDet;
BYTE ch,Y;
long nNs_Y[256]={0};
long i;
BITMAPFILEHEADER stBmpFileHead;
BITMAPINFOHEADER stBmpInfoHead;
RGBQU stRgb;
CString sStr;
if (!cFileBmp.Open("e:\\细菌.bmp",CFile::modeReadWrite | CFile::typeBinary)){
AfxMessageBox("图像文件打开错误!");
return ;
}
if (!cFileBmp.Open("e:\\结果.bmp",CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)){
AfxMessageBox("目的文件打开错误!");
return ;
}
//读文件头
cFileBmp.SeekToBegin();
cFileBmp.Read(&stBmpFileHead,sizeof(BITMAPFILEHEADER)); //单步执行时错误出现在这里
cFileBmp.Read(&stBmpInfoHead,sizeof(BITMAPINFOHEADER));
//统计灰度 Y=0.299*R+0.587*G+0.114*B
i=0x36;
while (i<stBmpInfoHead.biHeight*stBmpInfoHead.biWidth){
cFileBmp.Read(&stRgb,sizeof(RGBQU));
Y=0.299*stRgb.Red+0.587*stRgb.Green+0.114*stRgb.Blue;
nNs_Y[Y]++;
i++;
}
for (i=0;i<256;i++){
nNs_Y[i]/=(stBmpInfoHead.biHeight*stBmpInfoHead.biWidth);
sStr.Format("%d",nNs_Y[i]);
AfxMessageBox(sStr);
}
cFileDet.Close();
cFileBmp.Close();
}
问题点数:100、回复次数:5Top
1 楼laiyiling(陌生人[MVP])回复于 2005-12-25 17:25:34 得分 20
2个地方用的都是cFileBmp.Open,第二个是不是应该用cFileDet.OpenTop
2 楼laiyiling(陌生人[MVP])回复于 2005-12-25 17:26:42 得分 20
你这样用cFileBmp是空的,所以不能读书据。Top
3 楼Mackz(在相互)回复于 2005-12-25 17:40:52 得分 20
应该是运行错误吧,好象你重复打开文件了。
if (!cFileBmp.Open("e:\\细菌.bmp",CFile::modeReadWrite | CFile::typeBinary)){
AfxMessageBox("图像文件打开错误!");
return ;
}
if (!cFileBmp.Open("e:\\结果.bmp",CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)){
AfxMessageBox("目的文件打开错误!");
return ;
}
Top
4 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2005-12-25 20:16:22 得分 20
cFileBmp打开两次?第二个应该是cFileDet吧。Top
5 楼xuzheng318(忧郁王子)回复于 2005-12-25 22:34:00 得分 20
if (!cFileBmp.Open("e:\\细菌.bmp",CFile::modeReadWrite | CFile::typeBinary)){
AfxMessageBox("图像文件打开错误!");
return ;
}
if (!cFileDet.Open("e:\\结果.bmp",CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)){
AfxMessageBox("目的文件打开错误!");
return ;
}Top




