我想实现的功能:
在View类中响应子菜单,然后创建一个CDialogBar对象。这样,就是我点击子菜单的时候,对话条出现。
问题:
但是,不显示。只在Frame类中的Create函数里面可以。可是,那样的话,一运行函数对话条就出现了。
请问:
怎样才能实现点击子菜单,对话条出现。我在消息响应函数里面的代码如下:m_dlgbar=new CDialogBar;
if(!m_dlgbar->Create(this,IDD_DIALOGBAR,WS_CHILD|WS_VISIBLE|
CBRS_ALIGN_RIGHT|CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |CBRS_SIZE_DYNAMIC,IDD_DIALOGBAR))
{
TRACE(_T("对话条生成失败!"));
return -1;
}
MFC  CDialogBar  

解决方案 »

  1.   

    Create的第一个参数不要用this,用Frame的指针
      

  2.   

    我把指针改成Frame的指针了,还是不行。
    CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
    m_dlgbar =new CMyDialogBar;
    if(!m_dlgbar->Create(pMain,IDD_DIALOGBAR,WS_CHILD|WS_VISIBLE|
    CBRS_ALIGN_RIGHT |CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |
    CBRS_SIZE_DYNAMIC,IDD_DIALOGBAR))
    {
    TRACE(_T("对话条生成失败!"));
    return ;
    }
      

  3.   

    我用了RecalcLayout好了。我是这么写的:
    (1)在Frame类的OnCreate()中创建了一个DialogBar:
    if(!m_dlgbar.Create(this,IDD_DIALOGBAR,WS_CHILD|WS_VISIBLE|
    CBRS_ALIGN_RIGHT |CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |
    CBRS_SIZE_DYNAMIC,IDD_DIALOGBAR))//
    {
    TRACE(_T("对话条生成失败!"));
    return -1;
    }
    m_dlgbar.ShowWindow(SW_HIDE);(2)在View类中:
    void CtestView::OnCalibrate()
    {
    // TODO: 在此添加命令处理程序代码
    CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
    pMain->m_dlgbar.ShowWindow(SW_SHOW); pMain->RecalcLayout(); 

    }
    这样就是实现了我说的功能
    第一次发帖,谢谢两位的支持。