本帖最后由 coolmousewife 于 2010-03-30 19:23:16 编辑

解决方案 »

  1.   

    画完矩形后Sleep一会儿试试看
      

  2.   

    回楼上的 
    我用SuspendThread(GetCurrentThread())加在显示矩形之后,又出现了更诡异的事:
    程序暂停在:上一张图片(即含有模板图片的上一张)+矩形框+下一张图片的大小。
    用Sleep试了下:当下一张(即含有模板的图片)图片出现时,矩形框又消失了。附上显示图片功能代码:
    ::Load_original_image(Image[m_CurrentImage]);
            m_nXSize = ::GetXSize();
        m_nYSize = ::GetYSize();
    //设定图像窗口大小
        SetWindowSize(m_nXSize, m_nYSize);
            //设置窗口标题
    GetDocument()->SetTitle(Image[m_CurrentImage]);
        //更新画面
        Invalidate();
     
        //判断图像格式
        if( ::GetImageType() == 24)
    {
       //消除老图像数据
       if(m_pImageR != NULL)
       {
       delete[] m_pImageR;
           m_pImageR = NULL;
       }
       if(m_pImageG != NULL)
       {
       delete[] m_pImageG;
       m_pImageG = NULL;
       }
       if(m_pImageB != NULL)
       {
       delete[] m_pImageB;
       m_pImageB = NULL;
       }

       //为新图像分配内存
       m_pImageR = new BYTE[m_nXSize*m_nYSize];
       m_pImageG = new BYTE[m_nXSize*m_nYSize];
       m_pImageB = new BYTE[m_nXSize*m_nYSize];
       //读入新图像数据
      ::ReadImageDataRGB(m_pImageR, m_pImageG, m_pImageB);
    }
            else if(::GetImageType() == 8)
    {
        //消除老图像数据
        if(m_pImage != NULL)
    {
       delete[] m_pImage;
       m_pImage = NULL;
    }

        //为新图像分配内存
        m_pImage = new BYTE[m_nXSize*m_nYSize];
        //读入新图像数据
        ::ReadImageData(m_pImage);
    }     m_bFileOpen = TRUE; 其中某些函数是老师给的类库函数。
      

  3.   

    非常感谢zgl7903的回复
    问题已解决!