注意:因为某些原因(网上说是vs2010不再支持mfc中的某些控件,具体是什么我也不知道)本方法(嵌入对话条的方法)不能在vs2010上使用,所以如果是使用vs2010的小伙伴们请注意了。
一般的控件在基于对话框的mfc程序中使用非常方便,但在单文档的mfc中却有点麻烦。因为单文档的框架不能直接加各种各样控件,这些控件必须要加在对话框中,然后再把对话框镶嵌在单文档的mfc框架中。刚开始我没注意到这点,所以一直在找各种各样控件,找了很久都没找到。后来才意识到这点——控件只能直接加在对话框中,而我的是单文档的框架,所以找不到控件。后来在网上找了很多资料,终于把树形控件镶嵌进框架里面。但还没能对其进行消息映射。先做个小结吧!
一,先在Resource View 下的Dialog中鼠标右键-》添加资源-》添加一个CDialogBar(点开dialog,在dialog的子目录下第一个)。然后CDialogBar 中添加树形控件。BOOL CDlgBar::InitDialogBar() { UpdateData(FALSE);//这个一定要啊,这样就会有和CDialog一样的数据交换效果了 return TRUE; } BOOL CDlgBar::Create(CWnd* pParentWnd,UINT nIDTemplate,UINT nStyle,UINT nID) { // TODO: Add your specialized code here and/or call the base class BOOL bRes= CDialogBar::Create(pParentWnd,nIDTemplate,nStyle,nID ); InitDialogBar();//在类中添加一个成员函数就可以了 return bRes; }
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here if (!m_DlgBar.Create(this, IDD_DIALOGBAR, WS_CHILD | WS_VISIBLE |CBRS_LEFT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC, IDD_DIALOGBAR)) { TRACE0("Failed to create dialogbar/n"); return -1; // fail to create } m_DlgBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_DlgBar); return 0; }