请问以下的代码中的错误是什么?(初学者)
static char output[20];
CMainFrame *pFrame=(CMainFrame *)(AfxGetApp->m_pMainWnd);
CStatusBar *pStatus=&pFrame->m_wndStatusBar;
if(pStatus){
sprintf(output,"(%d,%d)",point.x,point.y);
pStatus->SetPaneText(2,output);
}
请给予解答,谢谢!

解决方案 »

  1.   

    m_wndStatusBar是protected
    把它的定义改成public
      

  2.   

    代码如下:
    static char output[20];
    CMainFrame *pFrame=(CMainFrame *)(AfxGetApp()->m_pMainWnd);
    CStatusBar *pStatus=&pFrame->m_wndStatusBar;
    if(pStatus){
    sprintf(output,"(%d,%d)",point.x,point.y);
    pStatus->SetPaneText(2,output);
    }如果你在别的文件中,如*View.cpp的OnDraw中调用的话,
    需要包含头文件MainFrm.h
    并且因为m_wndStatusBar是保护成员变量,
    象你现在这样用的话,需要将其改为public类型的(可以到MainFrm.h中去改)
    不过一般不这样用,一般做法都是写一个CMainFrame的成员函数来显示状态栏的信息的。
    所以可以直接访问protected的。