#define ID_MYNEWPANE 101
CString m_PaneString ;
CClientDC dc(this);
SIZE size = dc.GetTextExtent( m_PaneString );
int index = m_wndStatusBar.CommandToIndex(ID_MYNEWPANE);
m_wndStatusBar.SetPaneInfo( index, ID_MYNEWPANE, SBPS_POPOUT, size.cx + 15);

解决方案 »

  1.   

    CStatusBar  m_wndStatusBar;
    CToolBar    m_wndToolBar;
    我定义的
      

  2.   

    SIZE size = dc.GetTextExtent( m_PaneString );
    里面的GetTextExtent()返回的是什么?应该是CSize!
    你怎么能SIZE size呢?
      

  3.   

    我把这行屏蔽掉就可以了
    m_wndStatusBar.SetPaneInfo( index, ID_MYNEWPANE, SBPS_POPOUT, size.cx + 15);
      

  4.   

    size.cx + 15
    这个参数!
      

  5.   

    我试了一下如果你的index超过m_wndStatusBar中的Pane数就会出错。
      

  6.   

    不过,我的Index应该调到多少好?我不可能去手动的调吧
      

  7.   

    还有啊,我把程序放到Debug状态,如果出错,我按“取消”按钮的话,系统自动把Delphi调出来,我以前是学Delphi的,但是我现在怎么让系统自动跳到VC里进行调试,谢谢
      

  8.   

    要把ID_MYNEWPANE 扔到indicators数组里,然后在STRING TABLE中增加一个
    ID_MYNEWPANE资源就可以了。
      

  9.   

    在VC下用F5启动程序进行调试,出错自动停到断点处。
      

  10.   

    CStatusBar类中只有0,1,2,三个Index可用,有什么不能用手式调。三个都要变也只有三句,再大不了用个循环不就行了。
      

  11.   

    楼上的,我怎么记得有4个可以用的是,0,1,2,3四个Index吧
      

  12.   

    1。加一个字符串资源 ID_NEWMYPANE
    2。
    static UINT indicators[] =
    {
    ID_SEPARATOR,           // status line indicator
    ID_INDICATOR_KANA,
    ID_INDICATOR_CAPS,
    ID_INDICATOR_NUM,
    ID_INDICATOR_SCRL,
    ID_MYNEWPANE,            ///加上的
    };
    3。
    CString m_PaneString ;
    CClientDC dc(this);
    SIZE size = dc.GetTextExtent( m_PaneString );
    int index = m_wndStatusBar.CommandToIndex(ID_MYNEWPANE);
    m_wndStatusBar.SetPaneInfo( index, ID_MYNEWPANE, SBPS_POPOUT, size.cx + 15);