none
运行错误,怎么解决 RRS feed

  • 问题

  • 启动调试后,程序运行成功,但是在打开一个新的对话框,选择硬盘上的一张bmp图片后,本来就可以读取该bmp文件的信息和预览图了,但是去发生了这个错误提示,程序执行不下去了,请问这个问题是什么造成的,如何解决,谢谢!

    启动

    2012年2月8日 9:19

全部回复

  • Debug下打开call stack窗口,看函数调用堆栈,先找到出错的函数调用。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2012年2月8日 11:01
    版主
  • 在弹出的一个FileDialog窗口中,当我随意单击(不是双击文件名)一个bmp文件的时候就会报上图的错误,而不是选择了bmp文件点击"打开"按钮后才报错,不思其解,你说的这个方法我看了一下没发现什么问题
    2012年2月8日 11:33
  • 在相关位置下断点

    看看是什么地方出了问题


    新浪微博http://weibo.com/xianglitian,欢迎围观

    2012年2月9日 1:01
  • 因为这个程序是一个VC6.0的示例程序,我是在VC2010上进行代码重写

    今天早上搭建了一个VC6.0环境,经过测试完全正常。

    在VC6.0环境下运行后,随便找到一张bmp图片,就会出现这张图片的相关信息,如下图:

    而在VC2010下,程序可以正常运行,但当我打开CFileDialog对话框找到该bmp文件,鼠标单击该文件后,便会出现下面的问题,无法显示该图片的信息:

    貌似MSDN论坛没有站内消息功能,不知哪位大侠可以留下一个交流的邮箱或IM,我可以把源程序传给你,困惑了2天了,一直没有得到解决,无比郁闷啊!

    2012年2月9日 2:01
  • 启用了“调试堆栈”

    当点击bmp图片时,发生上图错误,有“重试”、“继续”和“中断”三个选择,当点击“继续”按钮时,错误信息提示如下:

    错误提示的81行代码如图:

    整个函数的全部代码如下:



    void CNewFileDialog::OnFileNameChange()
    {
    // TODO: 在此添加专用代码和/或调用基类
    CString exp;
    exp=GetFileExt();
    exp.MakeUpper(); //在比较扩展名时不区分大小写
    if(exp == "BMP") //显示位图
    {
    CFile file;
    if(!file.Open(GetPathName(),CFile::modeRead) )
    return;
    BITMAPFILEHEADER bmfHeader;
    //读位图文件头信息
    if(file.Read((LPSTR)&bmfHeader,sizeof(bmfHeader)) != sizeof(bmfHeader))
    return;
    //读位图头信息
    BITMAPINFOHEADER bmiHeader; 
    if(file.Read((LPSTR)&bmiHeader, sizeof(bmiHeader)) !=sizeof(bmiHeader))
    return ;
    //获得大小信息,并显示
    int bmWidth = bmiHeader.biWidth;
    int bmHeight = bmiHeader.biHeight;
    file.Close();
    int x=150,y=150;
    if(bmWidth < 150)
    x = bmWidth;
    if(bmHeight < 150)
    y = bmHeight;
    m_Bitmap.SetBitmap((HBITMAP)::LoadImage(NULL,GetPathName(),
    IMAGE_BITMAP,x,y,LR_LOADFROMFILE));
    CFileStatus status;
    CFile::GetStatus(GetPathName(),status);
    CString  measure,size,time;
    measure.Format("图像尺寸:%d*%d",bmWidth,bmHeight);
    size.Format("文件大小:%dK",status.m_size/1024);
    time.Format("创建时间:%s",status.m_ctime.Format("%Y年%m月%d日 %H:%M:%S"));
    m_Measure.SetWindowText(measure);
    m_Size.SetWindowText(size);
    m_Time.SetWindowText(time);
    }


    CFileDialog::OnFileNameChange();
    }

    2012年2月9日 2:19
  • 看看GetPathName的值是不是正确


    新浪微博http://weibo.com/xianglitian,欢迎围观

    2012年2月10日 2:46