照着网上写了个
打开BMP
图片的
程序,弹出File:f:\dd\vctools\vc7libs\ship\atlmfc\include\afxwin1.inl
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盘,这个是什么问题呢?
初学者,见谅
------解决方案--------------------------------------------------------
这个F盘是微软编译PDB文件的时候用的机器上的路径。
你第一次看见这个对话框的时候,需要在这里选择你的VC安装目录下的MFC源文件所在目录
------解决方案--------------------------------------------------------
点“重试”,然后看call stack,或者单步调试
------解决方案--------------------------------------------------------
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盘,这个是什么问题呢?
初学者,见谅
------解决方案--------------------------------------------------------
这个F盘是微软编译PDB文件的时候用的机器上的路径。
你第一次看见这个对话框的时候,需要在这里选择你的VC安装目录下的MFC源文件所在目录
------解决方案--------------------------------------------------------
点“重试”,然后看call stack,或者单步调试
------解决方案--------------------------------------------------------
-
C/C++ code
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("成功完成对文件的访问")); } }