问题:
  直接发送WM_PAINT消息应该就可以了吧?
  可是我的子窗口还是显示不正常。
其中:该子窗口A是被强制嵌入到当前应用程序B窗口的

解决方案 »

  1.   

    CWnd::Invalidate
    void Invalidate( BOOL bErase = TRUE );
      

  2.   

    对啊!得到子窗口句柄,然后用Invalidate()啊
      

  3.   

    //::InvalidateRect(g_hwndChild, NULL, FALSE);
    Invalidate(FALSE);
    好像都不行
      

  4.   

    试试这个呢:
    RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN);
      

  5.   

    to Atomictry(天影) 
        还是不行
      

  6.   

    我在窗口的WindowProc函数中处理这个消息,当我设定的事件发生时就更新用户区域(子窗口)。
    怎么没效果呢?
      

  7.   

    你是不是这样用的:
    找到你的子窗口句柄: m_hwndChild
    然后用以下各个函数:
        hwndChild.Invalidate();
        或者
        hwndChild.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN);再不行, 试着在主窗口中得到child的区域, 然后用InvalidateRect(hwndChild, NULL, FALSE);
      

  8.   

    Invalidate(FALSE); ?
    应该是Invalidate(TRUE);
      

  9.   

    to Atomictry(天影)
       我是这样做的。可是不行。
    试着在主窗口中得到child的区域, 然后用InvalidateRect(hwndChild, NULL, FALSE);
    这样不是一样,如果整个区域的更新都不行,那么指定区域的更新也可能不行。真奇怪
    to fisker0303(Thinking In Love)
        两种我都试了^_^
      

  10.   

    因为我曾经做的程序里,也是把多个窗口嵌入到一个窗口中的, 但是不存在更新的问题, 你的子窗体里是不是有自己写的ocx控件? 请你详细描述一下。
      

  11.   

    to Atomictry(天影) 
       谢谢就是两个独立的程序A和B,将B设为A的父窗口,即A嵌入到B中执行(用SetParent)。
    现在A的显示总是有问题。不知道怎么回事。
      

  12.   

    to photographMaker(sfsdf)
       我只是在程序B中用
         ::SetParent(hwndA,hwndB);
       现在问题:A在B窗口内的显示有问题。A现在已经是B的一个子窗口我想在程序B中通过消息或是一些函数来刷新A的显示。
      

  13.   

    Invalidate()的默认参数是TRUE。不加参数直接调用即可。
      

  14.   

    当鼠标在窗口内滑动时,可以使子窗口的局部区域刷新。
    我的思路是:
       当用户在子窗口区域进行鼠标操作,如点击鼠标左键,就会发出WM_LBUTTONUP消息;
       我在程序的WindowProc中获得这个消息并刷新子窗口。这样有问题吗?
      

  15.   

    作为一个子窗口,它也可以接受信息及处理信息。
    ---------------
    那么我直接给子窗口发送WM_PAINT消息为什么不能实现刷新请求??
    ---------------
    子窗口的刷新与父窗口有什么必须的关系吗??
      

  16.   

    Invalidate绝对可以滴!
    它使窗口区域无效,无效则重绘撒