259 lines
6.3 KiB
C++
259 lines
6.3 KiB
C++
// mainfrm.cpp : implementation of the CMainFrame class
|
|
// Docktest demo of Dockable Views functionality
|
|
|
|
#include "stdafx.h"
|
|
#include "docktest.h"
|
|
#include "mainfrm.h"
|
|
|
|
#include "OXWorkspaceState.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char BASED_CODE THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame
|
|
|
|
IMPLEMENT_DYNAMIC(CMainFrame, MainFrameParent)
|
|
|
|
BEGIN_MESSAGE_MAP(CMainFrame, MainFrameParent)
|
|
//{{AFX_MSG_MAP(CMainFrame)
|
|
ON_WM_CREATE()
|
|
ON_COMMAND(ID_VIEW_TILEDOCKBARS, OnViewTiledockbars)
|
|
ON_COMMAND(ID_ArrangeBottomLeft, OnArrangeBottomLeft)
|
|
ON_COMMAND(ID_ArrangeBottomRight, OnArrangeBottomRight)
|
|
ON_COMMAND(ID_ArrangeTopLeft, OnArrangeTopLeft)
|
|
ON_COMMAND(ID_ArrangeTopRight, OnArrangeTopRight)
|
|
ON_WM_CLOSE()
|
|
//}}AFX_MSG_MAP
|
|
|
|
// standard on/off control bar handlers for View menu.
|
|
ON_UPDATE_COMMAND_UI(ID_SIZEDLGBAR, OnUpdateControlBarMenu)
|
|
ON_COMMAND_EX(ID_SIZEDLGBAR, OnBarCheck)
|
|
|
|
ON_UPDATE_COMMAND_UI(ID_FIXEDDLGBAR, OnUpdateControlBarMenu)
|
|
ON_COMMAND_EX(ID_FIXEDDLGBAR, OnBarCheck)
|
|
|
|
ON_UPDATE_COMMAND_UI(ID_LISTBOXBAR, OnUpdateControlBarMenu)
|
|
ON_COMMAND_EX(ID_LISTBOXBAR, OnBarCheck)
|
|
|
|
ON_UPDATE_COMMAND_UI(ID_TABVIEWBAR, OnUpdateControlBarMenu)
|
|
ON_COMMAND_EX(ID_TABVIEWBAR, OnBarCheck)
|
|
|
|
ON_UPDATE_COMMAND_UI(ID_LOGOBAR, OnUpdateControlBarMenu)
|
|
ON_COMMAND_EX(ID_LOGOBAR, OnBarCheck)
|
|
|
|
//************************************************************************************
|
|
// This command handler is a example how to make your controls NOT TO BE DISABLED when
|
|
// on a CDialogbar or COXSizeDlgBar
|
|
ON_COMMAND(IDC_OXBUTTON, OnHandleButton)
|
|
//
|
|
//************************************************************************************
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
// This command handler is a example how to make your controls NOT TO BE DISABLED when
|
|
// on a CDialogbar or COXSizeDlgBar
|
|
void CMainFrame::OnHandleButton()
|
|
{
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// arrays of IDs used to initialize control bars
|
|
|
|
// toolbar buttons - IDs are command buttons
|
|
static UINT BASED_CODE buttons[] =
|
|
{
|
|
// same order as in the bitmap 'toolbar.bmp'
|
|
ID_FILE_NEW,
|
|
ID_FILE_OPEN,
|
|
ID_FILE_SAVE,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_CUT,
|
|
ID_EDIT_COPY,
|
|
ID_EDIT_PASTE,
|
|
ID_SEPARATOR,
|
|
ID_FILE_PRINT,
|
|
ID_APP_ABOUT,
|
|
};
|
|
|
|
static UINT BASED_CODE allbuttons[] =
|
|
{
|
|
// same order as in the bitmap 'toolbar.bmp'
|
|
ID_FILE_NEW,
|
|
ID_FILE_OPEN,
|
|
ID_FILE_SAVE,
|
|
ID_EDIT_CUT,
|
|
ID_EDIT_COPY,
|
|
ID_EDIT_PASTE,
|
|
ID_FILE_PRINT,
|
|
ID_APP_ABOUT,
|
|
};
|
|
|
|
static UINT BASED_CODE indicators[] =
|
|
{
|
|
ID_SEPARATOR, // status line indicator
|
|
ID_INDICATOR_CAPS,
|
|
ID_INDICATOR_NUM,
|
|
ID_INDICATOR_SCRL,
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame construction/destruction
|
|
|
|
|
|
CMainFrame::CMainFrame() :
|
|
COXMenuBarFrame<MainFrameParent,COXSizeDockBar>(CBRS_ALIGN_ANY,
|
|
RUNTIME_CLASS(COXSizableMiniDockFrameWnd))
|
|
{
|
|
m_BarCount = 0;
|
|
}
|
|
|
|
CMainFrame::~CMainFrame()
|
|
{
|
|
}
|
|
|
|
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
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
|
|
}
|
|
|
|
EnableDocking(CBRS_ALIGN_ANY);
|
|
|
|
// This is a sizeable dialog bar.. that includes gadget resizing
|
|
m_SizeDlgBar.SetSizeDockStyle(SZBARF_STDMOUSECLICKS |
|
|
SZBARF_DLGAUTOSIZE | SZBARF_ALLOW_MDI_FLOAT);
|
|
if (!m_SizeDlgBar.Create(this, IDD_DIALOGBAR2, CBRS_RIGHT, ID_FIXEDDLGBAR))
|
|
{
|
|
TRACE0("Failed to create dialog bar\n");
|
|
return -1;
|
|
}
|
|
m_SizeDlgBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
DockControlBar(&m_SizeDlgBar);
|
|
|
|
// This is a sizeable dialog bar...
|
|
if (!m_DlgBar.Create(this, IDD_DIALOGBAR, CBRS_RIGHT, ID_SIZEDLGBAR))
|
|
{
|
|
TRACE0("Failed to create dialog bar\n");
|
|
return -1;
|
|
}
|
|
m_DlgBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
|
|
// Following code will dock our sizeable control bar on the same row as
|
|
// the sizeable control that hasn't gadget resizing - a lot of people have asked how to do this.
|
|
CRect rcDlg1, rcDlg2;
|
|
m_SizeDlgBar.GetWindowRect(&rcDlg1);
|
|
m_DlgBar.GetWindowRect(&rcDlg2);
|
|
rcDlg2.BottomRight() = rcDlg2.TopLeft() + rcDlg1.Size();
|
|
rcDlg2.bottom -= 40;
|
|
|
|
DockControlBar(&m_DlgBar, AFX_IDW_DOCKBAR_RIGHT, &rcDlg2);
|
|
|
|
// This is a list box that is added dynamically. You can have almost any number of these...
|
|
if (!m_SizeListBar.Create(this))
|
|
{
|
|
TRACE0("Failed to create list box bar\n");
|
|
return -1;
|
|
}
|
|
|
|
m_SizeListBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
DockControlBar(&m_SizeListBar, AFX_IDW_DOCKBAR_BOTTOM);
|
|
|
|
// This is a sizeable logo bar.. that includes gadget resizing
|
|
// This is a TabView Bar that is added dynamically. You can have almost any
|
|
// number of these...
|
|
if (!m_TabViewBar.Create(this))
|
|
{
|
|
TRACE0("Failed to create TabView Bar\n");
|
|
return -1;
|
|
}
|
|
|
|
m_TabViewBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
DockControlBar(&m_TabViewBar, AFX_IDW_DOCKBAR_BOTTOM);
|
|
|
|
RecalcLayout();
|
|
|
|
TileDockedBars(CBRS_ALIGN_RIGHT); // this makes the bars the same size
|
|
|
|
m_bAutoMenuEnable=TRUE;
|
|
|
|
VERIFY(m_MTIClientWnd.Attach(this));
|
|
|
|
return 0;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CMainFrame::AssertValid() const
|
|
{
|
|
CMDIFrameWnd::AssertValid();
|
|
}
|
|
|
|
void CMainFrame::Dump(CDumpContext& dc) const
|
|
{
|
|
CMDIFrameWnd::Dump(dc);
|
|
}
|
|
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame message handlers
|
|
|
|
void CMainFrame::OnViewTiledockbars()
|
|
{
|
|
TileDockedBars();
|
|
RecalcLayout();
|
|
}
|
|
|
|
|
|
void CMainFrame::OnArrangeBottomLeft()
|
|
{
|
|
ArrangeFloatingBars(CBRS_ARRANGE_BOTTOMLEFT);
|
|
}
|
|
|
|
|
|
void CMainFrame::OnArrangeBottomRight()
|
|
{
|
|
ArrangeFloatingBars(CBRS_ARRANGE_BOTTOMRIGHT);
|
|
}
|
|
|
|
|
|
void CMainFrame::OnArrangeTopLeft()
|
|
{
|
|
ArrangeFloatingBars(CBRS_ARRANGE_TOPLEFT);
|
|
}
|
|
|
|
|
|
void CMainFrame::OnArrangeTopRight()
|
|
{
|
|
ArrangeFloatingBars(CBRS_ARRANGE_TOPRIGHT);
|
|
}
|
|
|
|
|
|
|
|
|
|
void CMainFrame::OnClose()
|
|
{
|
|
// TODO: Add your message handler code here and/or call default
|
|
// DestroyDynamicBars();
|
|
SaveSizeBarState(_T("DocktestBars"));
|
|
COXWorkspaceState workspaceState;
|
|
if (!workspaceState.StoreToRegistry())
|
|
{
|
|
TRACE0("CMainFrame::OnClose : Failed to save workspace to registry, continuing\n");
|
|
}
|
|
MainFrameParent::OnClose();
|
|
}
|
|
|