📄 mdiframes.cpp
字号:
CComplexFrameA::~CComplexFrameA()
{
}
BEGIN_MESSAGE_MAP(CComplexFrameA, CMDIChildWnd)
//{{AFX_MSG_MAP(CComplexFrameA)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CComplexFrameA message handlers
BOOL CComplexFrameA::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
// Splitter (1 row, 2 columns). Second column is a nested splitter (2 rows, 1 columns).
// First view is list view. Second view is a tab with 2 panes.
TVisualObject *pSplitter = new TVisualObject(1,"Test", 1, 2, pContext);
TVisualObject *pView1 = new TVisualObject(2,0,0,pContext, RUNTIME_CLASS(CDummyTree), CSize(150,0));
TVisualObject *pView2 = new TVisualObject(3,0,1,2,1,pContext);
TVisualObject *pNestedView1 = new TVisualObject(4,0,0,pContext,RUNTIME_CLASS(CDummyList),CSize(0,70));
TVisualObject *pNestedView2 = new TVisualObject(5,1,0,pContext,RUNTIME_CLASS(TTabWnd),CSize(0,0));
TVisualObject *pPane1 = new TVisualObject(6,"Form", pContext, RUNTIME_CLASS(CDummyForm));
TVisualObject *pPane2 = new TVisualObject(7,"Edit", pContext, RUNTIME_CLASS(CDummyEdit));
pView1->SetHotKey('1');
pNestedView1->SetHotKey('2');
pPane1->SetHotKey('3');
pPane2->SetHotKey('4');
m_Framework.Add(pSplitter);
m_Framework.Add(pSplitter, pView1);
m_Framework.Add(pSplitter, pView2);
m_Framework.Add(pView2, pNestedView1);
m_Framework.Add(pView2, pNestedView2);
m_Framework.Add(pNestedView2, pPane1);
m_Framework.Add(pNestedView2, pPane2);
return m_Framework.Create(this);
//return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}
void CComplexFrameA::OnDestroy()
{
CMDIChildWnd::OnDestroy();
// TODO: Add your message handler code here
m_Framework.Destroy();
}
/////////////////////////////////////////////////////////////////////////////
// CComplexFrameB
IMPLEMENT_DYNCREATE(CComplexFrameB, CMDIChildWnd)
CComplexFrameB::CComplexFrameB()
{
}
CComplexFrameB::~CComplexFrameB()
{
}
BEGIN_MESSAGE_MAP(CComplexFrameB, CMDIChildWnd)
//{{AFX_MSG_MAP(CComplexFrameB)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CComplexFrameB message handlers
BOOL CComplexFrameB::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
// Tab. First pane is another tab. Second pane is a view
TVisualObject *pTab1 = new TVisualObject(1,"",pContext,RUNTIME_CLASS(TTabWnd));
TVisualObject *pTab2 = new TVisualObject(2,"Form && Edit", pContext,RUNTIME_CLASS(TTabWnd));
TVisualObject *pPane21 = new TVisualObject(3,"Form", pContext, RUNTIME_CLASS(CDummyForm));
TVisualObject *pPane22 = new TVisualObject(4,"Edit", pContext, RUNTIME_CLASS(CDummyEdit));
TVisualObject *pPane11 = new TVisualObject(5,"Cars", pContext, RUNTIME_CLASS(CDummyList));
pPane11->SetHotKey('1');
pPane21->SetHotKey('2');
pPane22->SetHotKey('3');
m_Framework.Add(pTab1);
m_Framework.Add(pTab1, pPane11);
m_Framework.Add(pTab1, pTab2);
m_Framework.Add(pTab2, pPane21);
m_Framework.Add(pTab2, pPane22);
return m_Framework.Create(this);
//return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}
void CComplexFrameB::OnDestroy()
{
CMDIChildWnd::OnDestroy();
// TODO: Add your message handler code here
m_Framework.Destroy();
}
/////////////////////////////////////////////////////////////////////////////
// CComplexFrameC
IMPLEMENT_DYNCREATE(CComplexFrameC, CMDIChildWnd)
CComplexFrameC::CComplexFrameC()
{
}
CComplexFrameC::~CComplexFrameC()
{
}
BEGIN_MESSAGE_MAP(CComplexFrameC, CMDIChildWnd)
//{{AFX_MSG_MAP(CComplexFrameC)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CComplexFrameC message handlers
BOOL CComplexFrameC::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
// Tab. First pane is edit view. Second pane is a splitter (1 row, 2 columns)
// First column is tree, second column is a tab. First pane is form, second pane
// is a list
TVisualObject *pTab1 = new TVisualObject(1,"",pContext,RUNTIME_CLASS(TTabWnd),TVisualObject::TOS_TABTOP);
TVisualObject *pTabView1 = new TVisualObject(2,"Edit", pContext, RUNTIME_CLASS(CDummyEdit));
TVisualObject *pTabView2 = new TVisualObject(3,"Splitter",1,2,pContext);
TVisualObject *pTabView3 = new TVisualObject(8,"Tree", pContext, RUNTIME_CLASS(CDummyTree));
TVisualObject *pSplitView1 = new TVisualObject(4,0,0,pContext,RUNTIME_CLASS(CDummyTree),CSize(100,0));
TVisualObject *pSplitView2 = new TVisualObject(5,0,1,pContext,RUNTIME_CLASS(TTabWnd),CSize(0,0),TVisualObject::TOS_TABBOTTOM);
TVisualObject *pPane1 = new TVisualObject(6,"Form",pContext,RUNTIME_CLASS(CDummyForm));
TVisualObject *pPane2 = new TVisualObject(7,"List",pContext,RUNTIME_CLASS(CDummyList),TVisualObject::TOS_SELECTED);
TVisualObject *pPane3 = new TVisualObject(9,"Tree",pContext,RUNTIME_CLASS(CDummyTree));
pTabView1->SetHotKey('1');
pSplitView1->SetHotKey('2');
pPane1->SetHotKey('3');
pPane2->SetHotKey('4');
pPane3->SetHotKey('5');
m_Framework.Add(pTab1);
m_Framework.Add(pTab1,pTabView1);
m_Framework.Add(pTab1,pTabView2);
m_Framework.Add(pTab1,pTabView3);
m_Framework.Add(pTabView2,pSplitView1);
m_Framework.Add(pTabView2,pSplitView2);
m_Framework.Add(pSplitView2,pPane1);
m_Framework.Add(pSplitView2,pPane2);
m_Framework.Add(pSplitView2,pPane3);
return m_Framework.Create(this);
//return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}
void CComplexFrameC::OnDestroy()
{
CMDIChildWnd::OnDestroy();
// TODO: Add your message handler code here
m_Framework.Destroy();
}
/////////////////////////////////////////////////////////////////////////////
// CComplexFrameD
IMPLEMENT_DYNCREATE(CComplexFrameD, CMDIChildWnd)
CComplexFrameD::CComplexFrameD()
{
}
CComplexFrameD::~CComplexFrameD()
{
}
BEGIN_MESSAGE_MAP(CComplexFrameD, CMDIChildWnd)
//{{AFX_MSG_MAP(CComplexFrameD)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CComplexFrameD message handlers
void CComplexFrameD::OnDestroy()
{
CMDIChildWnd::OnDestroy();
// TODO: Add your message handler code here
m_Framework.Destroy();
}
BOOL CComplexFrameD::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
// Tab. First pane is edit view. Second pane is a splitter (1 row, 2 columns)
// First column is tree, second column is a tab. First pane is form, second pane
// is a list
TVisualObject *pTab1 = new TVisualObject(1,"",pContext,RUNTIME_CLASS(TTabWnd),TVisualObject::TOS_TABTOP);
TVisualObject *pTabView1 = new TVisualObject(2,"Edit", pContext, RUNTIME_CLASS(CDummyEdit));
TVisualObject *pTabView2 = new TVisualObject(3,"Splitter",1,2,pContext);
TVisualObject *pTabView3 = new TVisualObject(8,"Tree", pContext, RUNTIME_CLASS(CDummyTree));
TVisualObject *pSplitView1 = new TVisualObject(4,0,0,pContext,RUNTIME_CLASS(CDummyTree),CSize(100,0));
TVisualObject *pNested = new TVisualObject(13,0,1,2,1,pContext);
TVisualObject *pNestedPane = new TVisualObject(14,0,0,pContext,RUNTIME_CLASS(CDummyList),CSize(0,50));
TVisualObject *pSplitView2 = new TVisualObject(5,1,0,pContext,RUNTIME_CLASS(TTabWnd),CSize(0,0),TVisualObject::TOS_TABBOTTOM);
TVisualObject *pSplitViewSplit = new TVisualObject(10,"Split",2,1,pContext);
TVisualObject *pSplitViewSplit1 = new TVisualObject(11,0,0,pContext,RUNTIME_CLASS(CDummyEdit),CSize(0,100));
TVisualObject *pSplitViewSplit2 = new TVisualObject(12,1,0,pContext,RUNTIME_CLASS(CDummyForm),CSize(0,0));
TVisualObject *pPane1 = new TVisualObject(6,"Form",pContext,RUNTIME_CLASS(CDummyForm));
TVisualObject *pPane2 = new TVisualObject(7,"List",pContext,RUNTIME_CLASS(CDummyList),TVisualObject::TOS_SELECTED);
TVisualObject *pPane3 = new TVisualObject(9,"Tree",pContext,RUNTIME_CLASS(CDummyTree));
pTabView1->SetHotKey('1');
pSplitView1->SetHotKey('2');
pPane1->SetHotKey('3');
pPane2->SetHotKey('4');
pPane3->SetHotKey('5');
pTabView1->SetDescription(_T("Edit view"));
pTabView3->SetDescription(_T("Tree view"));
pSplitView1->SetDescription(_T("Tree view within a splitter"));
pPane1->SetDescription(_T("Form view as a tab within a splitter"));
pPane2->SetDescription(_T("List view as a tab within a splitter"));
pPane3->SetDescription(_T("Tree view as a tab within a splitter"));
pSplitViewSplit1->SetDescription(_T("Edit view within a tab splitter"));
pSplitViewSplit2->SetDescription(_T("Form view within a tab splitter"));
pNestedPane->SetDescription(_T("List within a nested splitter"));
m_Framework.Add(pTab1);
m_Framework.Add(pTab1,pTabView1);
m_Framework.Add(pTab1,pTabView2);
m_Framework.Add(pTab1,pTabView3);
m_Framework.Add(pTabView2,pSplitView1);
m_Framework.Add(pTabView2,pNested);
m_Framework.Add(pNested, pNestedPane);
m_Framework.Add(pNested,pSplitView2);
m_Framework.Add(pSplitView2,pPane1);
m_Framework.Add(pSplitView2,pSplitViewSplit);
m_Framework.Add(pSplitView2,pPane2);
m_Framework.Add(pSplitView2,pPane3);
m_Framework.Add(pSplitViewSplit, pSplitViewSplit1);
m_Framework.Add(pSplitViewSplit, pSplitViewSplit2);
if (m_Framework.Create(this)) {
//m_Framework.SetActiveTab(pPane3);
if (pPane3->IsTabPane())
pPane3->SetActiveTab();
return TRUE;
}
return FALSE;
//return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -