照着网上写了个打开BMP图片的程序,弹出File:f:\dd\vctools\vc7libs\ship\atlmfc\include\afxwin1.inl

wyw9122 2011-09-22 09:34:42
File:f:\dd\vctools\vc7libs\ship\atlmfc\include\afxwin1.inl
Line:255


For information on how your program can cause an assertion
failure,see the Visual C++ documentation on asserts.

(Press Retry debug the application)
程序是照着http://hi.baidu.com/krispan/blog/item/39caa5291f9ee7f898250a23.html写的

我的机子上没有f盘啊,那是一个物理光驱的盘符,我很久没把物理光驱装上了(早于装VS2008),都在用虚拟光驱,虚拟光驱盘符是G盘,这个是什么问题呢?
初学者,见谅
...全文
1449 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
扬帆破浪 2012-07-09
  • 打赏
  • 举报
回复
也出现一样的情况啊
xia_yi_ye 2011-11-07
  • 打赏
  • 举报
回复
楼下怎么没人回答了啊
cityboyloving 2011-10-21
  • 打赏
  • 举报
回复

void CRiftGameProDlg::TestCfile()
{
//
CFileDialog fileDlg(TRUE,_T("*.txt"),_T("*.txt"),NULL,_T("文本文件(*.txt)|*.txt||"),this);
//fileDlg.m_ofn.Flags |= OFN_FILEMUSTEXIST;
//fileDlg.m_ofn.lpstrFileTitle = _T("通过内存映射文件读取数据");
if (fileDlg.DoModal() == IDOK)
{
//创建文件对象
HANDLE hFile = CreateFile(fileDlg.GetPathName(),GENERIC_READ|GENERIC_WRITE,0,NULL,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
TRACE ("创建文件对象失败,错误代码:%d\r\n",GetLastError());
return;
}
//创建文件映射对象
HANDLE hFileMap = CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,0,NULL);
if (hFileMap == NULL)
{
TRACE("创建文件映射对象失败,错误代码:%d\r\n",GetLastError());
return;
}
//得到系统分配颗粒
SYSTEM_INFO SysInfo;
GetSystemInfo(&SysInfo);
DWORD dwGran = SysInfo.dwAllocationGranularity;
//得到文件尺寸
DWORD dwFileSizeHigh;
__int64 qwFileSize = GetFileSize(hFile,&dwFileSizeHigh);
qwFileSize |= (((__int64)dwFileSizeHigh)<<32);
//关闭文件对象
CloseHandle(hFile);
//偏移地址
__int64 qwFileOffset = 0;
//块大小
DWORD dwBlockBytes = dwGran;
while (qwFileSize >0)
{
//映射视图
if (qwFileSize<dwGran)
dwBlockBytes = (DWORD)(qwFileSize);
LPBYTE lpbMapAddress = (LPBYTE)MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,(DWORD)(qwFileOffset>>32),(DWORD)(qwFileOffset & 0xFFFFFFFF),dwBlockBytes);
if (lpbMapAddress == NULL)
{
TRACE("映射文件映射失败,错误代码:%d\r\n",GetLastError());
return;
}
//对映射的视图碱性访问
for (DWORD i = 0; i<dwBlockBytes;i++)
{
BYTE temp = *(lpbMapAddress+i);
}

//撤销文件映射
UnmapViewOfFile(lpbMapAddress);
//修正参数
qwFileOffset += dwBlockBytes;
qwFileSize -= dwBlockBytes;
}
//关闭文件映射对象句柄
CloseHandle(hFileMap);
AfxMessageBox(_T("成功完成对文件的访问"));

}
}


给你一段完整的代码看看把
蒋晟 2011-10-21
  • 打赏
  • 举报
回复
确保你安装了MFC的代码,之后再在Visual Studio选项里设置源代码搜索路径。
ruderal123 2011-10-20
  • 打赏
  • 举报
回复
我也遇到了这个问题 判断的问题 希望有高手解决一下 我是加了一个active控件后有的
wyw9122 2011-09-24
  • 打赏
  • 举报
回复
_AFXWIN_INLINE int CBitmap::GetBitmap(BITMAP* pBitMap)
{ ASSERT(m_hObject != NULL);
return ::GetObject(m_hObject, sizeof(BITMAP), pBitMap); }
DEBUG 结果,定位错误在“{ ASSERT(m_hObject != NULL);”
wyw9122 2011-09-23
  • 打赏
  • 举报
回复
它下面有三个按钮中止、重试、忽略,点击重试、忽略程序就继续下去了,功能也正常,点击中止就跳出了
没有选择VC安装目录下的MFC源文件所在目录的按钮啊,每次运行的时候都要点一下重试或者忽略才能继续下去啊
[Quote=引用 4 楼 jiangsheng 的回复:]

这个F盘是微软编译PDB文件的时候用的机器上的路径。
你第一次看见这个对话框的时候,需要在这里选择你的VC安装目录下的MFC源文件所在目录
[/Quote]
蒋晟 2011-09-23
  • 打赏
  • 举报
回复
这个F盘是微软编译PDB文件的时候用的机器上的路径。
你第一次看见这个对话框的时候,需要在这里选择你的VC安装目录下的MFC源文件所在目录
ex_impression 2011-09-23
  • 打赏
  • 举报
回复
你直接在程序里把图片的路径写到extname里试试。
buyong 2011-09-23
  • 打赏
  • 举报
回复
点“重试”,然后看call stack,或者单步调试
[Quote=引用 6 楼 wyw9122 的回复:]
它下面有三个按钮中止、重试、忽略,点击重试、忽略程序就继续下去了,功能也正常,点击中止就跳出了
没有选择VC安装目录下的MFC源文件所在目录的按钮啊,每次运行的时候都要点一下重试或者忽略才能继续下去啊

引用 4 楼 jiangsheng 的回复:

这个F盘是微软编译PDB文件的时候用的机器上的路径。
你第一次看见这个对话框的时候,需要在这里选择你的VC安装目录下的MFC源文件所在目……
[/Quote]
zhd320 2011-09-23
  • 打赏
  • 举报
回复
帮顶~
gameslq 2011-09-22
  • 打赏
  • 举报
回复
按F5进行调试,出现断言错误时点击重试(R)按钮查看错误位置。
libing64 2011-09-22
  • 打赏
  • 举报
回复
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("图片文件(*.jpg;*.jpeg;*.gif;*.bmp)|*.jpg;*.jpeg;*.gif;*.bmp|位图文件(*.BMP)|*.BMP||"));
这是你给的地址的打开文件的CFileDialog,按理说按这个往下写,首先会打开你使用VC最近一次打开文件的地址。
可能是之前你在用VC打开过光盘中的文件或者图片,(F盘一般为光盘,G盘为虚拟光盘)。
ljn398431 2011-09-22
  • 打赏
  • 举报
回复
帮顶下 虽然没遇到这种情况

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧