(MFC)Vs2010制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图) (二)
CMfcFormView, CFormView)
END_MESSAGE_MAP()
// CMfcFormView 诊断
#ifdef _DEBUG
void CMfcFormView::AssertValid() const
{
CFormView::AssertValid();
}
#ifndef _WIN32_WCE
void CMfcFormView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif
#endif //_DEBUG
// CMfcFormView 消息处理程序
至此我们已经把FormView派生出的CMfcFormView类建好了。
我们需要建立一个CDockablePane的派生类,予以容纳FormView,建立派生出的CDockablePane类为CSolutionWnd
利用类向导,添加名为CSolutionWnd,基类为CDockablePane...生成文件SolutionWnd.h和SolutionWnd.cpp
SolutionWnd.h里又添加了如下代码
[cpp]
class CSolutionWnd : public CDockablePane
{
DECLARE_DYNAMIC(CSolutionWnd)
//构造函数
public:
CSolutionWnd();
//析构函数
~CSolutionWnd();
//特性
public:
protected:
CMfcFormView* m_pformView;
public:
DECLARE_MESSAGE_MAP()
};
class CSolutionWnd : public CDockablePane
{
DECLARE_DYNAMIC(CSolutionWnd)
//构造函数
public:
CSolutionWnd();
//析构函数
~CSolutionWnd();
//特性
public:
protected:
CMfcFormView* m_pformView;
public:
DECLARE_MESSAGE_MAP()
};
SolutionWnd.cpp
新添加的代码
[cpp]
BEGIN_MESSAGE_MAP(CSolutionWnd, CDockablePane)
END_MESSAGE_MAP()
IMPLEMENT_DYNAMIC(CSolutionWnd, CDockablePane)
CSolutionWnd::CSolutionWnd()
{
m_pformView = (CMfcFormView*) (RUNTIME_CLASS(CMfcFormView)->CreateObject());
}
CSolutionWnd::~CSolutionWnd()
{
}
BEGIN_MESSAGE_MAP(CSolutionWnd, CDockablePane)
END_MESSAGE_MAP()
IMPLEMENT_DYNAMIC(CSolutionWnd, CDockablePane)
CSolutionWnd::CSolutionWnd()
{
m_pformView = (CMfcFormView*) (RUNTIME_CLASS(CMfcFormView)->CreateObject());
}
CSolutionWnd::~CSolutionWnd()
{
}
接着
1.在MainFrm.cpp里添加m_wndSolution变量,类型为CSolutionWnd
2.在MainFrm.cpp里的CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数里添加代码
[cpp]
// 创建停靠窗口
if (!CreateDockingWindows()) _
{
TRACE0("未能创建停靠窗口\n");
return -1;
}
m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);
m_wndClassView.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndFileView); |
CDockablePane* pTabbedBar = NULL; |
m_wndClassView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar);
m_wndOutput.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndOutput);
m_wndProperties.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndProperties);_
m_wndSolution.EnableDocking(CBRS_ALIGN_ANY);
m_wndSolution.AttachToTabWnd(&m_wndProperties, DM_SHOW, TRUE, &pTabbedBar);
// 红色为自己添加
3.在MainFrm.cpp里的CMainFrame::CreateDockingWindows()中添加代码
//创建解决方案窗口
CString strSolut