LRESULT SendMessage(
  HWND hWnd,      // handle of destination window
  UINT Msg,       // message to send
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

解决方案 »

  1.   

    VB有SendMessage这个函数吗?MSDN里面没查到,详细点可以吗?
      

  2.   

    你是要分割后的窗口通信呢,还是两个完全独立的窗口通信
    分割窗口通信■有文档相连的视图之间的通信
    由AppWizard生成的CCuteFTPView是与文档相连的,同时我们也让分割窗口CView2与文档相连,因此我们需要修改CCuteFTPApp的InitInstance()函数,我们将增加下面的部分。
    AddDocTemplate (new CMultiDocTemplate(IDR_VIEW2TYPE, 
    RUNTIME_CLASS(CMainDoc), 
    RUNTIME_CLASS(CMDIChildWnd), 
    RUNTIME_CLASS(CView2))); 
    我们现在来实现CCuteFTPView与CView2之间的通信。由于跟文档类相连的视图类 是不能安全的与除文档类之外的其余的视图类通信的。因此我们只能让他们都与文档 类通信。在文档中我们设置相应的指针以用来获的各个视图。我们重载 CCuteFTPView::OnOpenDocument()函数; 
    CCuteFTPView* pCuteFTPView;
    CView2* pView2;
    POSITION pos;
    CView* pView;
    while(pos!=NULL)
    {
      pView=GetNextView(pos); 
      if(pView->IsKindOf(RUNTIME_CLASS(CCuteFTPView))==NULL) 
        pCuteFTPView=(CCuteFTPView*)pView; 
      else(pView->IsKindOf(RUNTIME_CLASS(CCuteFTPView))==NULL) 
        pView2=(CView2*)pView; 

    这样我们在文档类中就获的了跟它相连的所有的视图的指针。
    如果需要在 CCuteFTPView中调用CView2中的一个方法DoIt()则代码如下: 
    CCuteFTPDoc* pDoc=GetDocument();
    CView2* pView2=pDoc->pView3;
    pView3.DoIt(); 
    ■无文档视图与文档关联视图之间的通信
    分割窗口CView3和分割窗口CView4都是不与文档相关联的。我们现在实现CView3与CView2的通信.正如前面所说,CView2只能安全的与CCuteFTPDoc通信,因此,CView3如果需要跟CView2通信,也必须借助于文档类。因此程序的关键是如何在CView3中获得文档的指针。视图类中没有这样的类成员可以用来直接访问文档类。但是我们知道在主窗口类MainFrame中我们可以获得程序的任意窗口类的指针。因此我们只要获得程序主窗口了的指针,就可以解决问题了。代码实现在CView3中访问CView2中的DoIt()方法。CView3中的代码如下: CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent(); 
    CCuteFTPDoc* Doc=(CCuteFTPDoc*)MainFrame->GetActiveDocument();
    if(Doc!=NULL) Doc->DoIt(); CCuteFTPDoc中的相应的处理函数DoIt()代码如下: CView2* pView2; 
    POSITION pos; 
    CView* pView; 
    while(pos!=NULL) 

      pView=GetNextView(pos);
      if(pView->IsKindOf(RUNTIME_CLASS(CView2))==NULL) 
      pView2=(CView2*)pView; 

    pView2->DoIt(); 
    ■无文档关联视图之间的通信
    分割窗口CView3和分割窗口CView4都是不跟文档相连的,如何实现他们之间的通信呢。 正如我们在上面所说的那样,由于在主框架中我们可以访问任意的视图,因此我们的主要任 务还是在程序中获得主框架的指针。在CView3中访问CView4中的方法DoIt()。 
    CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent(); 
    CView4* View4=(CView4*)MainFrame->m_wndSplitter1.GetPane(2,0); 
    View4->DoIt();