调试看一下active 的HWND和CMessageTestView的HWND是不是同一个。
active = pMF->GetActiveView();很可能不是你认为的那个窗口

解决方案 »

  1.   

    active 的HWND不应该是treeview的HWND吗
      

  2.   

    active 的HWND不应该是treeview的HWND吗
    你不是要向CMessageTestView中发送消息吗?
    所以active应该是CMessageTestView,这样它才能响应。
      

  3.   

    切分窗口的视图共享一个文档的,用GetDocument()->UpdateAllViews(this 就好了,不用自定义消息。
      

  4.   

    active 的HWND不应该是treeview的HWND吗
    你不是要向CMessageTestView中发送消息吗?
    所以active应该是CMessageTestView,这样它才能响应。
    看了一下,active 的HWND监视到的是treeview的HWND,那应该怎么办呢,虽然已经用别的方法解决了但还是想了解一下自定义消息怎么用
      

  5.   

    active 的HWND不应该是treeview的HWND吗
    你不是要向CMessageTestView中发送消息吗?
    所以active应该是CMessageTestView,这样它才能响应。
    看了一下,active 的HWND监视到的是treeview的HWND,那应该怎么办呢,虽然已经用别的方法解决了但还是想了解一下自定义消息怎么用
    自定义消息和其他消息都是一样的,比如需要窗口A响应消息,
    那就用A->SendMessage 或者PostMessage发送给这个窗口。
    你这里的问题主要是窗口获取的不对。如果你的结构是
    CMainFrame
       |-----CSplitWnd
             |-----TreeWnd
             |------PicWnd
    可以用AfxGetMainWnd()->SendMessage(WM_MY_MESSAGE)
    CMainFrame也响应这个消息,CMainFrame肯定可以获得PicWnd的窗口,然后由CMainFrame再把这个消息发给PicWnd
      

  6.   


    一直在寻找这个简单有效的方法啊!我还用的最笨的方法,通过分割窗口的CSplitterWnd变量寻找某个分割窗口。
    比如在框架类中通过CSplitterWnd m_wndSplitter;分割一行两列,左边树类,右边图类,
    m_wndSplitter.GetPane(0, 1),就是图类窗口的指针,类似下面的句子可以找到每个分割窗口,就是好长。((CMainFrame*)AfxGetApp()->m_pMainWnd)->m_wndSplitter.GetPane(0, 1),