none
求教:有关编写状态栏的过程中遇到的问题 RRS feed

  • 问题

  • 内容比较多,麻烦你帮我看看,谢谢!!


    这是一个作为例题的编写状态栏的程序,功能描述:在状态栏中动态显示X坐标和Y坐标,以及按下鼠标左键和右键时,会在指示窗格中显示LEFT和RIGHT

    在Visual 6.0,在MFC中,为什么有的资源要在View菜单中的Resource Symbols中定义,如重新定义状态栏资源ID为
    ID_MY_STATUS_BAR,为什么不能用资源编辑器进行定义,这该怎么理解呢?

    字符串表ID是什么概念,它在Resource.h文件中并没有定义,只能使用字符串表编辑器进行定义?怎么理解它呢?

    对菜单或工具栏中的按钮使用更新命令UI,很容易理解,但对字符串表ID使用更新命令UI进行启用禁用,该怎么理解。如当按下鼠标左键或右键时,会通过更新命令UI处理程序进行显示LEFT或RIGHT。

    以下是鼠标消息处理程序:
                                       为什么将它定义在视图类中,得到预期效果,而将它定义在CMainFrame类中,却不行呢?

    void CMainFrame::OnMouseMove(UINT nFlags, CPoint point)
    {
     CString str;

     str.Format ("x=%d",point.x);
     m_wndStatusBar.SetPaneText (0,str);
     str.Format ("y=%d",point.y);
     m_wndStatusBar.SetPaneText (1,str);
     
     CFrameWnd::OnMouseMove(nFlags, point);
    }

     

     void CEx14bView::OnMouseMove(UINT nFlags, CPoint point)
     {
      CMainFrame* pFrame=(CMainFrame*) AfxGetApp()->m_pMainWnd ;
      CStatusBar* pStatus=&pFrame->m_wndStatusBar ;
     CString str;
      str.Format ("x=%d",point.x);
            pStatus->SetPaneText (0,str);
      str.Format ("y=%d",point.y);
      pStatus->SetPaneText (1,str);
      
      CView::OnMouseMove(nFlags, point);
     }


    2009年7月6日 11:17

答案

  • Resource.h里面的资源ID不是资源,只是常量定义。不过它们通常用于给资源脚本中的资源一个更加便于阅读的名字。在载入资源的时候你不会想用32769这样的常量来指明所需要的资源吧?
    字符串表ID不是界面元素,不支持更新命令。


    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights. Visual C++ MVP
    • 已标记为答案 abloaa 2009年7月26日 11:23
    2009年7月6日 17:32
    版主