真是奇怪,如果我创建一个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);
}
如果创建两个以上的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);
}
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相关代码同上相似:
BOOL CBtmDlgBar::OnInitDialog(UINT wParam,LONG lParam)
{
BOOL bRet = HandleInitDialog(wParam,lParam);
if (!UpdateData(FALSE))
{
TRACE("InitCDataStatus Failed!");
}
return TRUE;
}