需要在自己新建的一个类里面不断的刷新这个窗口,这个窗口用于显示采集到的图像,这个新建窗口函数是从网上找的,在dialog旁边开个窗口。运行程序后,选择相应按钮启动这个窗口,实时的采集图像。但需要不断的刷新这个窗口,咋个操作啊。。
    PS:不知道我表达清楚没有。。

解决方案 »

  1.   

    用这个函数可以使窗口重绘 估计会闪
    Invalidate()还是在OnPaint()函数里处理把
      

  2.   

    使用双缓冲技术,
    现在内存dc画好图,
    然后使用bitblt绘制在窗口中。
      

  3.   

    你做的是不是类似视频扑捉的程序?可以用Invalidate(false);在不刷新背景的情况下整屏bitblt是不会闪烁的。
      

  4.   

    直接在窗口的Onpaint中画你的图像,这样就会实时刷新
      

  5.   

    在OnPaint()里面绘图,当窗口遮挡、缩放等发生时能自动被动刷新。
    内部数据发生了变化需要更行图像时用Invalidate(FALSE)函数,主动刷新。
      

  6.   

    这个就是个视频捕捉的程序。用的方法是创建一个线程(无限循环) 每一次循环采集一张图像 ,这时需要刷新显示图像的那个窗口,来实现视频的过程。
    我想知道怎么刷新那个窗口。用OnPaint试了不得行。
      

  7.   

    我这个程序就是内部数据发生变化,然后去更新。
    我要在程序采集的类里面去实现刷新。用Invalidate(FALSE)好像不行
      

  8.   


    这个方法一般是可以的,你用的是directShow么?
    要先看清楚你的实现模型,一般线程做采集,然后通过消息通知窗口去主动的更新自己,用的就是
    Invalidate(hdc,NULL,FALSE);
      

  9.   

    没用DirectShow,能给说下怎么给窗口发送消息去更新吗
    PS:这其实就是我最开始想问的
      

  10.   


    HWND hwnd = ::FindWindow("相机采集窗口", NULL);
    CRect rect;
    GetClientRect(hwnd,&rect);
    InvalidateRect(hwnd,rect,FALSE);用的这种方法,闪的太厉害。。
      

  11.   

    开始写了个测试程序在DOC里面用 //
    // Reset the view.
    //
      POSITION pos = GetFirstViewPosition();
      while( pos != NULL )
      {
      CFlyCaptureSdiView* pView = (CFlyCaptureSdiView*)GetNextView( pos );      
     
      InvalidateRect( pView->GetSafeHwnd(), NULL, FALSE );
      }区别是这个只有一个窗口,没有出现闪烁 ,显示正常。