1.CReBar有什么用呢?为什么有些程序把一些ToolBar加入到ReBar的对象中呢?2.我创建了一个CDialogBar对象,希望加入到CReBar的对象当中,在CMainFrame类头文件中声明了两个对象CReBar m_wndReBar;和CSpDlgBar m_dlgbar;(CSpDlgBar是我从CDialogBar派生出来的一个类),然后在CMainFrame::OnCreate函数中加入如下代码
if (!m_wndReBar.Create(this,RBS_BANDBORDERS,WS_CHILD | 
WS_VISIBLE | CBRS_LEFT|WS_CLIPSIBLINGS|WS_CLIPCHILDREN,IDD_DIALOGBAR)) 
{
TRACE0("Failed to create Rebar \n"); 
        return -1; 
}  if (!m_dlgbar.Create(this, IDD_DIALOGBAR,
      CBRS_LEFT | CBRS_TOOLTIPS | CBRS_FLYBY, IDD_DIALOGBAR))
   {
      TRACE0("Failed to create DlgBar\n");
      return -1;      // Fail to create.
   } m_wndReBar.AddBar(&m_dlgbar);为什么看不到我创建的CDialog对象呢?还有,如果我不把CDialogBar的那个对象添加到CReBar的话就可以看到CDialogBar啊..
这是为什么呢?

解决方案 »

  1.   

    m_dlgbar加上WS_VISIBLE也是看不到...如果我不用CReBar的话反而能够看到创建的CDialogBar啊。。
      

  2.   

    这真的是奇怪了...我在CMainFrame类中又声明了一个CDialogBar m_dgbr;对象,然后在CMainFrame::OnCreate函数把原来的m_dlgbar创建改成用m_dgbr对象反而可以看到了,不过我在MainFrame的消息映射用回原来派生的类CSpDlgBar,这就实现了功能...太奇怪了吧?
      

  3.   

    你的CDialogBar也应该有有WS_CHILD|WS_VISIBLE属性
      

  4.   


    m_dlgbar加上WS_CHILD试试。
    MFC提供了一个类CReBar,这是一个容器类,可以向这个类中添加工具栏,编辑框,下拉列表等等
      

  5.   

    if (!m_wndReBar.Create(this,RBS_BANDBORDERS,WS_CHILD | 
            WS_VISIBLE | CBRS_LEFT|WS_CLIPSIBLINGS|WS_CLIPCHILDREN,IDD_DIALOGBAR)) 
    if (!m_dlgbar.Create(this, IDD_DIALOGBAR,
          CBRS_LEFT | CBRS_TOOLTIPS | CBRS_FLYBY, IDD_DIALOGBAR))两个对象怎么IDD是相同的?
      

  6.   

    唉..自己调试跟踪了一下...原来是IMPLEMENT_DYNAMIC(CSpDlgBar, CDialog)这个东西我忘记了要改为IMPLEMENT_DYNAMIC(CSpDlgBar, CDialogBar)这样了感谢各位热心帮忙了...