用CSplitterWnd分割成两个窗口后(mainview,largeview),想要实现这样一个功能:对mainview里已经显示的图片,执行onmousemove(UINT nFlags, CPoint point)后,想在largeview里显示局部放大的且随着鼠标移到而不断变化的图,现在的问题是:对于largeview而言,不知怎么得到mainview的实时的CPoint坐标呢?或者还有其他的能实现这种功能的方法? 谢谢!

解决方案 »

  1.   

    在mainview鼠标取得矩形位置相对于图片的矩形坐标,以消息的形式发送给largeview,largeview根据这个坐标显示局部
    图片。
      

  2.   

    信息yxz_lp兄,不过“以消息的形式”是怎么实现呢?见笑~~~ 
      

  3.   

    SendMessage()
    PostMessage()
    都可以呀
      

  4.   

    通过文档的UpdateAllViews实现两个位图的通讯。
      

  5.   

    ((Cmainview*)((CMainFrame*)::AfxGetApp()->m_pMainWnd)->m_Splitter.GetPane(0,0))->
    可通过这个,获取第一个窗口的指针.再利用成员函数及相关函数.就可获得图片的大小及坐标了
      

  6.   

    谢谢tian兄,不过似乎即使得到Mainview窗口的指针,也得不到实时的cpoint值吧;根据yxz_lp的提示,本人是这样写的:void CMainView::OnMouseMove(UINT nFlags, CPoint point)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    HWND HWnd=::FindWindow(CLargeview,NULL);
    ::SendMessage(HWnd,WM_MOUSEMOVE,0,MAKELPARAM(point.x,point.y));
            CView::OnMouseMove(nFlags, point);
    }其中CLargeview为那个用于放大图像的窗口类(class CLargeview : public CFormView);然后再在Largeview.cpp的OnDraw()里添加接受Message的代码:
    ::DefWindowProc(?,WM_MOUSEMOVE,0,MAKELPARAM(point.x,point.y))编译后,FindWindow()第一个参数出了问题,不知怎么的到CLargeview的窗口句柄,还有不知以上的想法是否可行呢,请各位指点!见笑~~
      

  7.   

    使用自定义消息可以的。在OnMouseMove内,用SendMessage,鼠标位置作为参数传递过去。
      

  8.   

    我上面就是这样做的啊,FindWindow()函数出了问题,不知咋整