我在客户区显示一些文本,但是我把运行的视图放下后在打开 显示的东西不见了?那位高手帮解释一下,怎么解决

解决方案 »

  1.   

    在onsize 里面进行重画Invalidate
      

  2.   

    没有刷新的问题,
    把你的显示数据的代码放在OnPaint函数里面即可
      

  3.   

    我是在程序的其他地方得到pDC绘图的void CCaneraView::PrintMat(CvMat *matrix,CPoint point)
    {
    int i=0;
    int j=0;
    for(i=0;i < matrix->rows;i++)//行
    {

    m_CalibrateResolution.Format("/n");
    switch(matrix->type&0X07)
    {
    case CV_32F: 
    case CV_64F:
    {
    for(j=0;j<matrix->cols;j++)//列
    {
        m_CalibrateResolution.Format("%9.3f ",(float)cvGetReal2D(matrix,i,j));
        this->GetDC()->TextOut(point.x+i*100,point.y+j*30,m_CalibrateResolution);
    }
    m_postion.x=point.x+i*100;
                                    m_postion.y=point.y+j*30;
    break;
    }
    case CV_8U:
    case CV_16U:
    {
    for(j=0;j<matrix->cols;j++)
    {
        m_CalibrateResolution.Format("%6d  ",(int)cvGetReal2D(matrix,i,j));
        this->GetDC()->TextOut(point.x+i*100,point.y+j*16,m_CalibrateResolution);
       
    }
     m_postion.x=point.x+i*100;
                                     m_postion.y=point.y+j*16;
    break;
    }

    default:
    break;

    }
    }
    }
      

  4.   

    放到 CCaneraView::OnDraw 函数中,其提供了 pDC 参数,不需要 GetDC。
      

  5.   

    void CCaneraView::OnDraw(CDC* pDC)
    {
    CCaneraDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here      //参数 matrix 和 point 的值可以设置从文档类对象(如:pDoc)中获取,或定义为CaneraView 类的数据成员,这样只需要更改这 2 个参数的值,然后使用 Invalidate 让视图更新数据。      PrintMat(pDC, CvMat *matrix, CPoint point);
    }void CCaneraView::PrintMat(CDC *pDC, CvMat *matrix,CPoint point) 
    {
    ...
    }
      

  6.   

    CView 和 CScrollView 一般都是在 OnDraw 中显示与其关联的文档类中的数据。