真是奇怪,如果我创建一个dialogbar,然后在里面放一个CListBox控件,设置其成员变量后就正常!
如果创建两个以上的dialogbar,随便在哪个dialogbar中放置控件,都不能设置成员变量?
为什么一给控件添加变量,程序就出错! 
相关代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 ........
       //-----------------------------------
//创建底部CDialogBar
if (!m_btmdlgbar.Create(this,IDD_DIALOG_BTMBAR,WS_VISIBLE|WS_CHILD|CBRS_SIZE_DYNAMIC|CBRS_BOTTOM,IDD_DIALOG_BTMBAR))
{
              TRACE0("Failed to create CDataStatus bar!");
              return -1;
}
//------------------------,如果将下面这些注释掉,运行就会正常
//创建顶部CDialogBar
if (!m_topdlgbar.Create(this,IDD_DIALOG_TOPBAR,WS_VISIBLE|WS_CHILD|CBRS_SIZE_DYNAMIC|CBRS_TOP,IDD_DIALOG_TOPBAR))
{
              TRACE0("Failed to create CDataStatus bar!");
              return -1;
}
}
//--------------------------------------------------------
//重写框架类的OnCmdMsg虚函数。如果不重写该函数,那么不光DDX功能无法实现,连最基本的OnCommand事件都无法实现
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
{
// TODO: Add your specialized code here and/or call the base class
if (m_topdlgbar.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo))
              return    TRUE;
if (m_btmdlgbar.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo))
              return    TRUE;
return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}

解决方案 »

  1.   

    CBtmDlgBar相关代码:
    CBtmDlgBar::CBtmDlgBar(CWnd* pParent /*=NULL*/)
    // : CDialog(CBtmDlgBar::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CBtmDlgBar)
    //}}AFX_DATA_INIT
    }
    void CBtmDlgBar::DoDataExchange(CDataExchange* pDX)
    {
    // CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CBtmDlgBar)
    DDX_Control(pDX, IDC_LIST1543, m_rew);
    //}}AFX_DATA_MAP
    }
    CTopDlgBar相关代码同上相似:
      

  2.   

    你的dialogbar调用了OnInitDialog了吗?
      

  3.   

    我的dialogbar没有调用OnInitDialog,只是重载了
    BOOL CBtmDlgBar::OnInitDialog(UINT wParam,LONG lParam) 
    {
    BOOL bRet = HandleInitDialog(wParam,lParam);
        if (!UpdateData(FALSE))
        {
               TRACE("InitCDataStatus Failed!");
        }
        return TRUE;
    }