各位老大,小弟初学vc,我新建了一个基于对话框的程序mfc应用程序后,想给程序加上工具条和状态条,我在对话框类中加了CStatusBar,和CToolBar的变量,然后在对话框的初始化处理函数中,加上
if (m_statusBar.Create(this))//AfxGetApp()->m_pMainWnd
{
     m_statusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
     m_statusBar.SetPaneInfo(0, m_statusBar.GetItemID(0),SBPS_STRETCH,NULL);
}
if (m_toolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP))
{
m_toolBar.LoadToolBar(IDR_MAINTOOLBAR);
}
程序编译没有错误,可是状态条和工具条确没有,什么原因?请高手给予指点,有兴趣的朋友留个mail,我把程序给你发过去,帮我看下,谢谢

解决方案 »

  1.   

    http://www.vchelp.net/vchelp/archive.asp?type_id=5&class_id=1&cata_id=1&article_id=523http://www.vckbase.com/bbs/prime/viewprime.asp?id=3
      

  2.   

    Q:如何在对话框中加入工具条     在 OnInitDialog 中加入下面代码: 
      BOOL CYourDlg::OnInitDialog()
      {
           CDialog::OnInitDialog();     
     
           // Create the toolbar. To understand the meaning of the styles used, you 
           // can take a look at the MSDN for the Create function of the CToolBar class.
           ToolBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS |CBRS_FLYBY | CBRS_BORDER_BOTTOM);
     
          // I have assumed that you have named your toolbar's resource as IDR_TOOLBAR1.
          // If you have given it a different name, change the line below to accomodate 
          // that by changing the parameter for the LoadToolBar function.
          ToolBar.LoadToolBar(IDR_TOOLBAR1);
      
          CRect rcClientStart;
          CRect rcClientNow;
          GetClientRect(rcClientStart);
     
          // To reposition and resize the control bar
          RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0, reposQuery, rcClientNow);
         CPoint ptOffset(rcClientNow.left - rcClientStart.left,rcClientNow.top-rcClientStart.top);
     
         CRect rcChild;
         CWnd* pwndChild = GetWindow(GW_CHILD);
     
         while (pwndChild)
         {
           pwndChild->GetWindowRect(rcChild);
           ScreenToClient(rcChild);
           rcChild.OffsetRect(ptOffset);
           pwndChild->MoveWindow(rcChild, FALSE);
           pwndChild = pwndChild->GetNextWindow();
         }
     
         CRect rcWindow;
         GetWindowRect(rcWindow);
         rcWindow.right += rcClientStart.Width() - rcClientNow.Width();
         rcWindow.bottom += rcClientStart.Height() - rcClientNow.Height();
         MoveWindow(rcWindow, FALSE);   
     
         // And position the control bars
         RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
      
         return TRUE;  // return TRUE  unless you set the focus to a control
      }
        
      

  3.   

    Q:如何在对话框中加入状态条?     定义 CStatusBar 变量:  CStatusBar m_StatusBar;
         定义状态条指定状态:  static UINT BASED_CODE indicators[] =
      {
         ID_INDICATOR_CAPS,
         ID_INDICATOR_NUM
      };
         在 OnInitDialog 中加入下面代码: 
      m_StatusBar.CreateEx(this,SBT_TOOLTIPS,WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,AFX_IDW_STATUS_BAR);
     
      // Set the indicators namely caps and nums lock status
      m_StatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT));
     
      CRect rect;
      GetClientRect(&rect);
                     
      m_StatusBar.SetPaneInfo(0,ID_INDICATOR_CAPS,SBPS_NORMAL,rect.Width()/2);
      m_StatusBar.SetPaneInfo(1,ID_INDICATOR_NUM,SBPS_STRETCH ,rect.Width()/2);
     
      RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,ID_INDICATOR_NUM);
     
      m_StatusBar.GetStatusBarCtrl().SetBkColor(RGB(180,180,180));