class CMyDialog: public CDialog
{
   .............
   CStatusBarCtrl m_wndStatusBar;
}
BOOL CPictureDlg::OnInitDialog()
{
.................
//加入状态栏
  if(m_wndStatusBar.Create(WS_CHILD|WS_CHILD|CCS_BOTTOM|CCS_NODIVIDER,
CRect(0,0,0,0),this,ID_STATUSBAR))
{
  TRACE("\nSucess to create statusbar!\n");
  m_wndStatusBar.SetParts(3,nWidth);
  m_wndStatusBar.SetText(_T("Pane 2"),1,0);
  m_wndStatusBar.SetText(_T("Pane 3"),2,0);
  m_wndStatusBar.SetMinHeight(50);
  m_wndStatusBar.Invalidate();
}
else
  TRACE("\nFailed to  crate the statusbar!\n");
}
调试显示创建成功,为什么显示不成功了???
多谢那位高手指教了!

解决方案 »

  1.   

    在创建后加上:
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
    试试
      

  2.   

    m_wndStatusBar.Create(WS_CHILD|WS_CHILD|CCS_BOTTOM|CCS_NODIVIDER,
    CRect(0,0,0,0),this,ID_STATUSBAR)你在Create中给状态栏指定的窗口是(0,0,0,0),它当然不会显示了。
      

  3.   

    试试这个
    m_StatusBar = new CStatusBarCtrl;
    m_StatusBar->Create(WS_CHILD|WS_VISIBLE|SBT_OWNERDRAW,
    CRect(0,0,0,0), this, 0);int strPartDim[4]= {180, 260, 340, -1};
    m_StatusBar->SetParts(4, strPartDim);m_StatusBar->SetText(_T("Dialog / StatusBar / Toolbar"),0,0);
    m_StatusBar->SetText(_T("Example"), 1, 0);CString string;
    string.LoadString(IDS_MYCOMPUTER);
    m_StatusBar->SetText(string, 3 ,SBT_NOBORDERS );
    m_StatusBar->SetIcon(3, 
    SetIcon(AfxGetApp()->LoadIcon(IDI_COMP),
    FALSE));
      

  4.   

    状态条这么简单的东西,可以不用MFC类的,自己在DC上画更省事.
      

  5.   

    奇怪,为什么不用CStatusBar,而要用CStatusBarCtrl.
    我用CStatusBar加了个RepositionBars就有StatusBar了。