读书人

照着网上写了个打开BMP图片的程序弹

发布时间: 2012-04-10 21:03:56 作者: rapoo

照着网上写了个打开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,或者单步调试

探讨
它下面有三个按钮中止、重试、忽略,点击重试、忽略程序就继续下去了,功能也正常,点击中止就跳出了
没有选择VC安装目录下的MFC源文件所在目录的按钮啊,每次运行的时候都要点一下重试或者忽略才能继续下去啊

引用:

这个F盘是微软编译PDB文件的时候用的机器上的路径。
你第一次看见这个对话框的时候,需要在这里选择你的VC安装目录下的MFC源文件所在目……

[解决办法]
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("成功完成对文件的访问"));        }} 

读书人网 >VC/MFC

热点推荐