设计一个程序,在其中可以启动别的程序,但别的程序启动后的窗口必须嵌入在我的程序的某一个窗口中。我是用SetParent()函数来改变启动后程序的窗口的父窗口,可以实现嵌入,但嵌入后的窗口重绘有问题,在被覆盖后老是不能够正确地刷新。
哪位高手知道怎么解决或者有别的方法吗?

解决方案 »

  1.   

    假如子窗口句柄为_hWnd 那么在父窗口的WM_PAINT中调用InvalidateRect(_hWnd,rect,TRUE);
      

  2.   

    好象不是楼上那样解决的。
    我以前遇到过这样的问题,好象是在主框架类的OnCreateClient函数中修改搞好的。
    参考一下下面的代码:
    OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
    {
    // TODO: Add your specialized code here and/or call the base class
    CCreateContext context;
    context.m_pNewViewClass = RUNTIME_CLASS(CMyView);
    context.m_pCurrentDoc = GetActiveDocument();
    //假设被分为了上下2个窗口,上面的用来嵌入别的应用程序,下面的窗口是自己的控制窗口
    m_wndSplit.CreateStatic(this,2,1);
    // m_wndSplit.CreateView(0,0,pContext->m_pNewViewClass,CSize(200, 300),pContext);
    m_wndSplit.CreateView(1,0,RUNTIME_CLASS(CMyView),CSize(200, 300),pContext); //下面的是关键之处,就是多创建一个视图
    m_chartview=(CMyView*)CreateView(&context,IDR_MYVIEW_ID);//m_chartview是定义在
    //CMainFrame中的一个视图指针
    }