我之前有一个模仿cad的程序,能在状态栏显示鼠标当前的坐标。今天我分割了原来的窗口,也就是有两个视图类了。
  这个显示坐标的功能就无效了。
  我测试过移动鼠标时下面的代码还是会运行的。但就是没效果。void CminicadView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString str;
str.Format (_T("x=%d,y=%d"),point.x,point.y);
((CMainFrame *)GetParent())->SetMessageText (str);
CScrollView::OnMouseMove(nFlags, point);

}

解决方案 »

  1.   


         ((CMainFrame *)GetParent())?  你确定CminicadView的父窗口是CMainFrame吗?不如该为直接获取框架窗口指针
      

  2.   

    class CMySpl :public CSplitterWnd
    class CDlgFKHT : public CFormView当前视图的父窗体是 分割视图窗体,所以先得弄到 CSplitterWnd 的指针
    然后可以的到其他视图的指针,或者GetParent()的到更上层的窗体,比如CChildFrame CMySpl* pSpl=(CMySpl*)this->GetParent();
    CDlgFKHT* pDlg=(CDlgFKHT*)pSpl->GetPane(0,0);
      

  3.   

    就在视图的OnMousemove里添加代码:void CminicadView::OnMouseMove(UINT nFlags, CPoint point)
    {
    CString str;
    str.Format("(%d, %d)", point.x, point.y);
    CStatusBar* pStatusBar=(CStatusBar*)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
    pStatusBar->SetPaneText(0, str); CView::OnMouseMove(nFlags, point);

      

  4.   


    ((CMainFrame *)GetParent())->SetMessageText (str); 
    改为
    ((CMainFrame *)::AfxGetMainWnd())->SetMessageText (str); 起始你的GetParent()取得是CSplitterWnd窗体