如下程序用于绘制一条凸轮曲线:
   Clear();//该函数是自己写的函数,用以清除视图区内的所有图形
   for(i=1;i<nNumInPRFile;i++)
  {
    pDC->LineTo(pt[i]);
    Sleep(5);
  }
原以为这段程序首先清除视图区,然后执行后面的循环,但是实际上看到的效果是Clear()函数的作用在循环结束以后才体现出来。估计实际上执行了Clear()函数,但是没有立即刷新出来,如何解决这种问题呀?Sleep()这个函数实在是烦躁,老是使我记得程序界面停滞,处于程序忙,等待中、、、、、、、、、、可我又不知道其它好的方法,ft

解决方案 »

  1.   

    你Clear()函数有问题,你需要把clear()函数贴出来大家才能帮你
      

  2.   

    void CMyView::Clear()
    {
    CPMACDoc* pDoc=GetDocument();
    ASSERT_VALID(pDoc);

    CMetaFileDC* ReplacementMetafileDC=new CMetaFileDC();
    ReplacementMetafileDC->Create();
    delete pDoc->pMetaFileDC;
    pDoc->pMetaFileDC=ReplacementMetafileDC;

    Invalidate();
    }
    我用元文件保存绘制过的图形,再在OnDraw()函数中重放出来。
    void CPMACView::OnDraw(CDC* pDC)
    {
    CPMACDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc); HMETAFILE MetaFileHandle=pDoc->pMetaFileDC->Close();
    pDC->PlayMetaFile(MetaFileHandle);

    CMetaFileDC* ReplacementMetafileDC=new CMetaFileDC();
    ReplacementMetafileDC->Create();
    ReplacementMetafileDC->PlayMetaFile(MetaFileHandle);

    DeleteMetaFile(MetaFileHandle);
    delete pDoc->pMetaFileDC;
    pDoc->pMetaFileDC=ReplacementMetafileDC;}另外:我单独调用Clear()函数已经能够清除视图区所以的图形了。