// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "SplitterWndTest.h"
#include "SplitterWndTestView.h"
#include "SplitterWndTestView2.h"
#include "SplitterWndTestView3.h"
#include "SplitterWndTestView4.h"
#include "SplitterWndTestView5.h"
#include "SplitterWndTestView6.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_SPLITTER_1_EXPANDLEFT, OnSplitter1Expandleft)
ON_COMMAND(ID_SPLITTER_1_EXPANDRIGHT, OnSplitter1Expandright)
ON_UPDATE_COMMAND_UI(ID_SPLITTER_1_EXPANDLEFT, OnUpdateSplitter1Expandleft)
ON_UPDATE_COMMAND_UI(ID_SPLITTER_1_EXPANDRIGHT, OnUpdateSplitter1Expandright)
ON_COMMAND(ID_SPLITTER_2_EXPANDBOTTOM, OnSplitter2Expandbottom)
ON_UPDATE_COMMAND_UI(ID_SPLITTER_2_EXPANDBOTTOM, OnUpdateSplitter2Expandbottom)
ON_COMMAND(ID_SPLITTER_2_EXPANDTOP, OnSplitter2Expandtop)
ON_UPDATE_COMMAND_UI(ID_SPLITTER_2_EXPANDTOP, OnUpdateSplitter2Expandtop)
ON_COMMAND(ID_SPLITTER_3_EXPANDLEFT, OnSplitter3Expandleft)
ON_UPDATE_COMMAND_UI(ID_SPLITTER_3_EXPANDLEFT, OnUpdateSplitter3Expandleft)
ON_COMMAND(ID_SPLITTER_3_EXPANDRIGHT, OnSplitter3Expandright)
ON_UPDATE_COMMAND_UI(ID_SPLITTER_3_EXPANDRIGHT, OnUpdateSplitter3Expandright)
ON_COMMAND(ID_SPLITTER_4_EXPANDTOP, OnSplitter4Expandtop)
ON_UPDATE_COMMAND_UI(ID_SPLITTER_4_EXPANDTOP, OnUpdateSplitter4Expandtop)
ON_COMMAND(ID_SPLITTER_4_EXPANDBOTTOM, OnSplitter4Expandbottom)
ON_UPDATE_COMMAND_UI(ID_SPLITTER_4_EXPANDBOTTOM, OnUpdateSplitter4Expandbottom)
ON_COMMAND(ID_SPLITTER_SWITCHVIEW, OnSplitterSwitchview)
ON_UPDATE_COMMAND_UI(ID_SPLITTER_SWITCHVIEW, OnUpdateSplitterSwitchview)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
m_pSplitterWnd = NULL;
m_pSplitterWnd2 = NULL;
m_pSplitterWnd3 = NULL;
m_pSplitterWnd4 = NULL;
}
CMainFrame::~CMainFrame()
{
if (m_pSplitterWnd != NULL) delete m_pSplitterWnd;
if (m_pSplitterWnd2 != NULL) delete m_pSplitterWnd2;
if (m_pSplitterWnd3 != NULL) delete m_pSplitterWnd3;
if (m_pSplitterWnd4 != NULL) delete m_pSplitterWnd4;
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
m_pSplitterWnd = new ST_SplitterWnd();
// split into five panes : +-----+--------+
// | | |
// +--+--+ |
// | | | |
// +--+ | |
// | | | |
// +--+--+--------+
//
m_pSplitterWnd->Create(this,NULL,NULL,pContext,true);
m_pSplitterWnd2 = m_pSplitterWnd->AddSubDivision(LEFT_SIDE,RUNTIME_CLASS(CSplitterWndTestView3),NULL,pContext,false);
m_pSplitterWnd3 = m_pSplitterWnd2->AddSubDivision(BOTTOM_SIDE,NULL,RUNTIME_CLASS(CSplitterWndTestView2),pContext,true);
m_pSplitterWnd4 = m_pSplitterWnd3->AddSubDivision(LEFT_SIDE,RUNTIME_CLASS(CSplitterWndTestView4),RUNTIME_CLASS(CSplitterWndTestView5),pContext,false);
// Make the right pane switchable between two different views
m_nViewNo[0] = m_pSplitterWnd->AddView(RIGHT_SIDE,RUNTIME_CLASS(CSplitterWndTestView),pContext);
m_nViewNo[1] = m_pSplitterWnd->AddView(RIGHT_SIDE,RUNTIME_CLASS(CSplitterWndTestView6),pContext);
m_pSplitterWnd->SetInitialStatus();
return(TRUE);
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}
void CMainFrame::OnSplitter1Expandleft()
{
// TODO: Code f�r Befehlsbehandlungsroutine hier einf�gen
m_pSplitterWnd->ToggleSide(RIGHT_SIDE);
}
void CMainFrame::OnSplitter1Expandright()
{
// TODO: Code f�r Befehlsbehandlungsroutine hier einf�gen
m_pSplitterWnd->ToggleSide(LEFT_SIDE);
}
void CMainFrame::OnUpdateSplitter1Expandleft(CCmdUI* pCmdUI)
{
// TODO: Code f�r die Befehlsbehandlungsroutine zum Aktualisieren der Benutzeroberfl�che hier einf�gen
if (m_pSplitterWnd->IsSideHidden(RIGHT_SIDE)) {
pCmdUI->SetCheck(true);
}
else {
if (m_pSplitterWnd->IsSideHidden(LEFT_SIDE)) {
pCmdUI->Enable(FALSE);
}
else {
pCmdUI->Enable(TRUE);
}
pCmdUI->SetCheck(false);
}
}
void CMainFrame::OnUpdateSplitter1Expandright(CCmdUI* pCmdUI)
{
// TODO: Code f�r die Befehlsbehandlungsroutine zum Aktualisieren der Benutzeroberfl�che hier einf�gen
if (m_pSplitterWnd->IsSideHidden(LEFT_SIDE)) {
pCmdUI->SetCheck(true);
}
else {
if (m_pSplitterWnd->IsSideHidden(RIGHT_SIDE)) {
pCmdUI->Enable(FALSE);
}
else {
pCmdUI->Enable(TRUE);
}
pCmdUI->SetCheck(false);
}
}
void CMainFrame::OnSplitter2Expandbottom()
{
// Toggle the Top pane -> hide it, to expand the bottom page !
m_pSplitterWnd2->ToggleSide(TOP_SIDE);
}
void CMainFrame::OnSplitter2Expandtop()
{
// Toggle the Bottom pane -> hide it, to expand the bottom page !
m_pSplitterWnd2->ToggleSide(BOTTOM_SIDE);
}
void CMainFrame::OnUpdateSplitter2Expandbottom(CCmdUI* pCmdUI)
{
// TODO: Code f�r die Befehlsbehandlungsroutine zum Aktualisieren der Benutzeroberfl�che hier einf�gen
if (m_pSplitterWnd2->IsSideHidden(TOP_SIDE)) {
pCmdUI->SetCheck(true);
}
else {
if (m_pSplitterWnd2->IsSideHidden(BOTTOM_SIDE)) {
pCmdUI->Enable(FALSE);
}
else {
pCmdUI->Enable(TRUE);
}
pCmdUI->SetCheck(false);
}
}
void CMainFrame::OnUpdateSplitter2Expandtop(CCmdUI* pCmdUI)
{
// TODO: Code f�r die Befehlsbehandlungsroutine zum Aktualisieren der Benutzeroberfl�che hier einf�gen
if (m_pSplitterWnd2->IsSideHidden(BOTTOM_SIDE)) {
pCmdUI->SetCheck(true);
}
else {
if (m_pSplitterWnd2->IsSideHidden(TOP_SIDE)) {
pCmdUI->Enable(FALSE);
}
else {
pCmdUI->Enable(TRUE);
}
pCmdUI->SetCheck(false);
}
}
void CMainFrame::OnSplitter3Expandleft()
{
// TODO: Code f�r Befehlsbehandlungsroutine hier einf�gen
m_pSplitterWnd3->ToggleSide(RIGHT_SIDE);
}
void CMainFrame::OnSplitter3Expandright()
{
// TODO: Code f�r Befehlsbehandlungsroutine hier einf�gen
m_pSplitterWnd3->ToggleSide(LEFT_SIDE);
}
void CMainFrame::OnUpdateSplitter3Expandleft(CCmdUI* pCmdUI)
{
// TODO: Code f�r die Befehlsbehandlungsroutine zum Aktualisieren der Benutzeroberfl�che hier einf�gen
if (m_pSplitterWnd3->IsSideHidden(RIGHT_SIDE)) {
pCmdUI->SetCheck(true);
}
else {
if (m_pSplitterWnd3->IsSideHidden(LEFT_SIDE)) {
pCmdUI->Enable(FALSE);
}
else {
pCmdUI->Enable(TRUE);
}
pCmdUI->SetCheck(false);
}
}
void CMainFrame::OnUpdateSplitter3Expandright(CCmdUI* pCmdUI)
{
// TODO: Code f�r die Befehlsbehandlungsroutine zum Aktualisieren der Benutzeroberfl�che hier einf�gen
if (m_pSplitterWnd3->IsSideHidden(LEFT_SIDE)) {
pCmdUI->SetCheck(true);
}
else {
if (m_pSplitterWnd3->IsSideHidden(RIGHT_SIDE)) {
pCmdUI->Enable(FALSE);
}
else {
pCmdUI->Enable(TRUE);
}
pCmdUI->SetCheck(false);
}
}
void CMainFrame::OnSplitter4Expandtop()
{
// TODO: Code f�r Befehlsbehandlungsroutine hier einf�gen
m_pSplitterWnd4->ToggleSide(BOTTOM_SIDE);
}
void CMainFrame::OnSplitter4Expandbottom()
{
// TODO: Code f�r Befehlsbehandlungsroutine hier einf�gen
m_pSplitterWnd4->ToggleSide(TOP_SIDE);
}
void CMainFrame::OnUpdateSplitter4Expandtop(CCmdUI* pCmdUI)
{
// TODO: Code f�r die Befehlsbehandlungsroutine zum Aktualisieren der Benutzeroberfl�che hier einf�gen
if (m_pSplitterWnd4->IsSideHidden(BOTTOM_SIDE)) {
pCmdUI->SetCheck(true);
}
else {
if (m_pSplitterWnd4->IsSideHidden(TOP_SIDE)) {
pCmdUI->Enable(FALSE);
}
else {
pCmdUI->Enable(TRUE);
}
pCmdUI->SetCheck(false);
}
}
void CMainFrame::OnUpdateSplitter4Expandbottom(CCmdUI* pCmdUI)
{
// TODO: Code f�r die Befehlsbehandlungsroutine zum Aktualisieren der Benutzeroberfl�che hier einf�gen
if (m_pSplitterWnd4->IsSideHidden(TOP_SIDE)) {
pCmdUI->SetCheck(true);
}
else {
if (m_pSplitterWnd4->IsSideHidden(BOTTOM_SIDE)) {
pCmdUI->Enable(FALSE);
}
else {
pCmdUI->Enable(TRUE);
}
pCmdUI->SetCheck(false);
}
}
void CMainFrame::OnSplitterSwitchview()
{
// TODO: Code f�r Befehlsbehandlungsroutine hier einf�gen
m_pSplitterWnd->SwitchToView(1);
}
void CMainFrame::OnUpdateSplitterSwitchview(CCmdUI* pCmdUI)
{
// TODO: Code f�r die Befehlsbehandlungsroutine zum Aktualisieren der Benutzeroberfl�che hier einf�gen
if (m_pSplitterWnd->IsSideHidden(RIGHT_SIDE)) {
pCmdUI->Enable(FALSE);
}
else {
pCmdUI->Enable(TRUE);
}
}