580 lines
18 KiB
C++
580 lines
18 KiB
C++
// ==========================================================================
|
|
// Class Implementation: COXCustomizeTabbedMDIPage
|
|
// ==========================================================================
|
|
|
|
// Version: 9.3
|
|
|
|
// This software along with its related components, documentation and files ("The Libraries")
|
|
// is © 1994-2007 The Code Project (1612916 Ontario Limited) and use of The Libraries is
|
|
// governed by a software license agreement ("Agreement"). Copies of the Agreement are
|
|
// available at The Code Project (www.codeproject.com), as part of the package you downloaded
|
|
// to obtain this file, or directly from our office. For a copy of the license governing
|
|
// this software, you may contact us at legalaffairs@codeproject.com, or by calling 416-849-8900.
|
|
|
|
// //////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
#include "OXCustomizeTabbedMDIPage.h"
|
|
#include "OXCustomizeManager.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
const UINT IDC_RADIO_ORIENT_LEFT=2000;
|
|
const UINT IDC_RADIO_ORIENT_TOP=2001;
|
|
const UINT IDC_RADIO_ORIENT_RIGHT=2002;
|
|
const UINT IDC_RADIO_ORIENT_BOTTOM=2003;
|
|
|
|
const UINT IDC_RADIO_APPEARANCE_TAB_BUTTONS=2010;
|
|
const UINT IDC_RADIO_APPEARANCE_PUSH_BUTTONS=2011;
|
|
const UINT IDC_RADIO_APPEARANCE_FLAT_BUTTONS=2012;
|
|
|
|
const UINT IDC_RADIO_POSITIONING_MULTILINE=2020;
|
|
const UINT IDC_RADIO_POSITIONING_SINGLELINE=2021;
|
|
|
|
const UINT IDC_CHECK_DISPLAY_HOTTRACK=2040;
|
|
const UINT IDC_CHECK_DISPLAY_FIXEDWIDTH=2041;
|
|
const UINT IDC_CHECK_DISPLAY_NORAGGEDRIGHT=2042;
|
|
const UINT IDC_CHECK_DISPLAY_SCROLLOPPOSITE=2043;
|
|
const UINT IDC_CHECK_DISPLAY_FORCEICONLEFT=2044;
|
|
const UINT IDC_CHECK_DISPLAY_FORCELABELLEFT=2045;
|
|
|
|
#ifndef TCS_FLATBUTTONS
|
|
#define TCS_FLATBUTTONS 0x0008
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COXCustomizeTabbedMDIPage dialog
|
|
|
|
|
|
IMPLEMENT_DYNCREATE(COXCustomizeTabbedMDIPage, COXCustomizePage)
|
|
|
|
|
|
COXCustomizeTabbedMDIPage::COXCustomizeTabbedMDIPage()
|
|
{
|
|
//{{AFX_DATA_INIT(COXCustomizeTabbedMDIPage)
|
|
m_bSupportTabbedMDI = FALSE;
|
|
m_dwOffset = 0;
|
|
//}}AFX_DATA_INIT
|
|
m_pHelpWnd=NULL;
|
|
m_dwStyle=0;
|
|
m_nDialogID=IDD;
|
|
m_sProfileName.Empty();
|
|
}
|
|
|
|
|
|
COXCustomizeTabbedMDIPage::~COXCustomizeTabbedMDIPage()
|
|
{
|
|
}
|
|
|
|
|
|
BOOL COXCustomizeTabbedMDIPage::
|
|
InitializeTabbedMDI(DWORD dwTabCtrlStyle/*=DEFAULT_TABCTRLSTYLE*/,
|
|
DWORD dwOffset/*=ID_TABOFFSET*/,
|
|
LPCTSTR lpszProfileName/*=_T("CustomizeTabbedMDI")*/,
|
|
BOOL bSupportTabbedMDI/*=TRUE*/)
|
|
{
|
|
|
|
CWnd* pWnd=AfxGetMainWnd();
|
|
ASSERT(pWnd!=NULL && ::IsWindow(pWnd->GetSafeHwnd()));
|
|
ASSERT_KINDOF(CMDIFrameWnd,pWnd);
|
|
if(!pWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd)))
|
|
{
|
|
TRACE(_T("COXCustomizeTabbedMDIPage::InitializeTabbedMDI: tabbed MDI is supported only for MDI applications\n"));
|
|
return FALSE;
|
|
}
|
|
|
|
if(bSupportTabbedMDI)
|
|
{
|
|
if(!m_MTIClientWnd.Attach((CMDIFrameWnd*)pWnd,dwTabCtrlStyle))
|
|
{
|
|
TRACE(_T("COXCustomizeTabbedMDIPage::InitializeTabbedMDI: failed to initialize tabbed MDI support\n"));
|
|
return FALSE;
|
|
}
|
|
m_MTIClientWnd.GetTabCtrl()->SetOffset(dwOffset);
|
|
}
|
|
|
|
if(lpszProfileName!=NULL)
|
|
{
|
|
m_sProfileName=lpszProfileName;
|
|
m_MTIClientWnd.LoadState(lpszProfileName);
|
|
}
|
|
|
|
m_bSupportTabbedMDI=m_MTIClientWnd.IsAttached();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
BOOL COXCustomizeTabbedMDIPage::OnCloseManager(BOOL bIsOk)
|
|
{
|
|
if(bIsOk)
|
|
{
|
|
if(!ApplyChanges())
|
|
{
|
|
return FALSE;
|
|
}
|
|
if(!m_sProfileName.IsEmpty())
|
|
{
|
|
m_MTIClientWnd.SaveState(m_sProfileName);
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
void COXCustomizeTabbedMDIPage::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
COXCustomizePage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(COXCustomizeTabbedMDIPage)
|
|
DDX_Control(pDX, IDC_OX_TREE_TABCTRL_SETTINGS, m_treeTabCtrlSettings);
|
|
DDX_Control(pDX, IDC_OX_SPIN_OFFSET, m_spinOffset);
|
|
DDX_Check(pDX, IDC_OX_CHECK_SUPPORT_TABBEDMDI, m_bSupportTabbedMDI);
|
|
DDX_Text(pDX, IDC_OX_EDIT_OFFSET, m_dwOffset);
|
|
DDV_MinMaxDWord(pDX, m_dwOffset, 0, 1000);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(COXCustomizeTabbedMDIPage, COXCustomizePage)
|
|
//{{AFX_MSG_MAP(COXCustomizeTabbedMDIPage)
|
|
ON_BN_CLICKED(IDC_OX_CHECK_SUPPORT_TABBEDMDI, OnCheckSupportTabbedmdi)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COXCustomizeTabbedMDIPage message handlers
|
|
|
|
BOOL COXCustomizeTabbedMDIPage::Load(const COXCustomizeManager* pCustomizeManager)
|
|
{
|
|
// Call default implementation. It will load this demo dialog as the first
|
|
// page and will create About and CodeSample pages if specified.
|
|
if(!COXCustomizePage::Load(pCustomizeManager))
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
void COXCustomizeTabbedMDIPage::Unload()
|
|
{
|
|
// add here code for cleaning up all objects created by demo
|
|
//
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
COXCustomizePage::Unload();
|
|
}
|
|
|
|
void COXCustomizeTabbedMDIPage::OnInitDialog()
|
|
{
|
|
// must call default implementation
|
|
COXCustomizePage::OnInitDialog();
|
|
|
|
// add here initialization code for your demo dialog. Treat it as a
|
|
// normal CDialog::OnInitDialog function
|
|
|
|
// spin control
|
|
m_spinOffset.SetRange(0,1000);
|
|
|
|
GetVars();
|
|
|
|
// layout
|
|
//
|
|
m_LayoutManager.TieChild(&m_treeTabCtrlSettings,OX_LMS_ANY,OX_LMT_SAME);
|
|
|
|
m_LayoutManager.TieChild(IDC_OX_STATIC_OFFSET,OX_LMS_BOTTOM,OX_LMT_SAME);
|
|
m_LayoutManager.TieChild(IDC_OX_EDIT_OFFSET,OX_LMS_BOTTOM,OX_LMT_SAME);
|
|
m_LayoutManager.TieChild(IDC_OX_SPIN_OFFSET,OX_LMS_BOTTOM,OX_LMT_SAME);
|
|
//
|
|
///////////////////////////////////////
|
|
|
|
m_bInitialized=TRUE;
|
|
|
|
UpdateData(FALSE);
|
|
|
|
OnCheckSupportTabbedmdi();
|
|
}
|
|
|
|
|
|
BOOL COXCustomizeTabbedMDIPage::ApplyChanges()
|
|
{
|
|
if(!UpdateData(TRUE))
|
|
return FALSE;
|
|
|
|
CWnd* pWnd=AfxGetMainWnd();
|
|
ASSERT(pWnd!=NULL && ::IsWindow(pWnd->GetSafeHwnd()));
|
|
ASSERT_KINDOF(CMDIFrameWnd,pWnd);
|
|
if(!pWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd)))
|
|
{
|
|
TRACE(_T("COXCustomizeTabbedMDIPage::InitializeTabbedMDI: tabbed MDI is supported only for MDI applications\n"));
|
|
return FALSE;
|
|
}
|
|
|
|
m_dwStyle=0;
|
|
// orientation
|
|
switch(m_treeTabCtrlSettings.GetCheckedRadioButton(IDC_RADIO_ORIENT_LEFT,
|
|
IDC_RADIO_ORIENT_BOTTOM))
|
|
{
|
|
case IDC_RADIO_ORIENT_LEFT:
|
|
m_dwStyle|=TCS_VERTICAL;
|
|
break;
|
|
case IDC_RADIO_ORIENT_TOP:
|
|
break;
|
|
case IDC_RADIO_ORIENT_RIGHT:
|
|
m_dwStyle|=TCS_VERTICAL|TCS_BOTTOM;
|
|
break;
|
|
case IDC_RADIO_ORIENT_BOTTOM:
|
|
m_dwStyle|=TCS_BOTTOM;
|
|
break;
|
|
default:
|
|
ASSERT(FALSE);
|
|
}
|
|
|
|
// appearance
|
|
switch(m_treeTabCtrlSettings.GetCheckedRadioButton(IDC_RADIO_APPEARANCE_TAB_BUTTONS,
|
|
IDC_RADIO_APPEARANCE_FLAT_BUTTONS))
|
|
{
|
|
case IDC_RADIO_APPEARANCE_TAB_BUTTONS:
|
|
break;
|
|
case IDC_RADIO_APPEARANCE_PUSH_BUTTONS:
|
|
m_dwStyle|=TCS_BUTTONS;
|
|
break;
|
|
case IDC_RADIO_APPEARANCE_FLAT_BUTTONS:
|
|
m_dwStyle|=TCS_BUTTONS|TCS_FLATBUTTONS;
|
|
break;
|
|
default:
|
|
ASSERT(FALSE);
|
|
}
|
|
|
|
// positioning
|
|
switch(m_treeTabCtrlSettings.GetCheckedRadioButton(IDC_RADIO_POSITIONING_SINGLELINE,
|
|
IDC_RADIO_POSITIONING_MULTILINE))
|
|
{
|
|
case IDC_RADIO_POSITIONING_SINGLELINE:
|
|
break;
|
|
case IDC_RADIO_POSITIONING_MULTILINE:
|
|
m_dwStyle|=TCS_MULTILINE;
|
|
break;
|
|
default:
|
|
ASSERT(FALSE);
|
|
}
|
|
|
|
// display
|
|
if(m_treeTabCtrlSettings.GetCheck(IDC_CHECK_DISPLAY_HOTTRACK)==OTITEM_CHECKED)
|
|
m_dwStyle|=TCS_HOTTRACK;
|
|
if(m_treeTabCtrlSettings.GetCheck(IDC_CHECK_DISPLAY_FIXEDWIDTH)==OTITEM_CHECKED)
|
|
m_dwStyle|=TCS_FIXEDWIDTH;
|
|
if(m_treeTabCtrlSettings.GetCheck(IDC_CHECK_DISPLAY_NORAGGEDRIGHT)==OTITEM_UNCHECKED)
|
|
m_dwStyle|=TCS_RAGGEDRIGHT;
|
|
if(m_treeTabCtrlSettings.GetCheck(IDC_CHECK_DISPLAY_SCROLLOPPOSITE)==OTITEM_CHECKED)
|
|
m_dwStyle|=TCS_SCROLLOPPOSITE;
|
|
if(m_treeTabCtrlSettings.GetCheck(IDC_CHECK_DISPLAY_FORCEICONLEFT)==OTITEM_CHECKED)
|
|
m_dwStyle|=TCS_FORCEICONLEFT;
|
|
if(m_treeTabCtrlSettings.GetCheck(IDC_CHECK_DISPLAY_FORCELABELLEFT)==OTITEM_CHECKED)
|
|
m_dwStyle|=TCS_FORCELABELLEFT;
|
|
|
|
//
|
|
/////////////////////////////////
|
|
|
|
if ( m_MTIClientWnd.m_hWnd != NULL )
|
|
{
|
|
if(m_bSupportTabbedMDI==m_MTIClientWnd.IsAttached() &&
|
|
m_dwOffset==m_MTIClientWnd.GetTabCtrl()->GetOffset() &&
|
|
m_dwStyle==(m_MTIClientWnd.GetTabCtrl()->GetStyle()&0x0fff))
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
if(m_MTIClientWnd.IsAttached())
|
|
{
|
|
// check if it has been attached to background painter before
|
|
#ifdef OX_CUSTOMIZE_BACKGROUND
|
|
BOOL bPaintBackground=FALSE;
|
|
COXBackgroundPainterOrganizer* pBackgroundOrganizer=
|
|
m_pCustomizeManager->GetBackgroundPainterOrganizer();
|
|
ASSERT(pBackgroundOrganizer!=NULL);
|
|
COXDIB dib;
|
|
PaintType paintType=Tile;
|
|
COLORREF clrBk=RGB(0,0,0);
|
|
CWnd* pOriginWnd=NULL;
|
|
if(pBackgroundOrganizer->IsAttached(&m_MTIClientWnd))
|
|
{
|
|
COXBackgroundPainter* pBackgroundPainter=
|
|
pBackgroundOrganizer->GetPainter(&m_MTIClientWnd);
|
|
ASSERT(pBackgroundPainter!=NULL);
|
|
COXDIB* pDIB=pBackgroundPainter->GetWallpaperImage();
|
|
if(pDIB!=NULL)
|
|
dib=*pDIB;
|
|
paintType=pBackgroundPainter->GetPaintType();
|
|
clrBk=pBackgroundPainter->GetBkColor();
|
|
pOriginWnd=pBackgroundPainter->GetOriginWnd();
|
|
|
|
pBackgroundOrganizer->Detach(&m_MTIClientWnd);
|
|
bPaintBackground=TRUE;
|
|
}
|
|
#endif // OX_CUSTOMIZE_BACKGROUND
|
|
|
|
VERIFY(m_MTIClientWnd.Detach());
|
|
|
|
#ifdef OX_CUSTOMIZE_BACKGROUND
|
|
if(bPaintBackground)
|
|
{
|
|
//static CWnd g_MTIClientWnd;
|
|
if (m_pHelpWnd)
|
|
{
|
|
m_pHelpWnd->DestroyWindow();
|
|
delete m_pHelpWnd;
|
|
}
|
|
m_pHelpWnd=new COXHelperWnd;
|
|
m_pHelpWnd->Attach(((CMDIFrameWnd*)pWnd)->m_hWndMDIClient);
|
|
ASSERT(pBackgroundOrganizer!=NULL);
|
|
VERIFY(pBackgroundOrganizer->Attach(m_pHelpWnd,&dib,
|
|
paintType,clrBk,pOriginWnd));
|
|
}
|
|
#endif // OX_CUSTOMIZE_BACKGROUND
|
|
}
|
|
}
|
|
else if(m_bSupportTabbedMDI)
|
|
{
|
|
// check if there is CWnd object attached to MDIClient
|
|
CWnd* pMDIClientWnd=CWnd::FromHandlePermanent(((CMDIFrameWnd*)pWnd)->
|
|
m_hWndMDIClient);
|
|
if(pMDIClientWnd!=NULL)
|
|
{
|
|
// check if it has been attached to background painter before
|
|
#ifdef OX_CUSTOMIZE_BACKGROUND
|
|
BOOL bPaintBackground=FALSE;
|
|
COXBackgroundPainterOrganizer* pBackgroundOrganizer=
|
|
m_pCustomizeManager->GetBackgroundPainterOrganizer();
|
|
ASSERT(pBackgroundOrganizer!=NULL);
|
|
COXDIB dib;
|
|
PaintType paintType=Tile;
|
|
COLORREF clrBk=RGB(0,0,0);
|
|
CWnd* pOriginWnd=NULL;
|
|
if(pBackgroundOrganizer->IsAttached(pMDIClientWnd))
|
|
{
|
|
COXBackgroundPainter* pBackgroundPainter=
|
|
pBackgroundOrganizer->GetPainter(pMDIClientWnd);
|
|
ASSERT(pBackgroundPainter!=NULL);
|
|
COXDIB* pDIB=pBackgroundPainter->GetWallpaperImage();
|
|
if(pDIB!=NULL)
|
|
dib=*pDIB;
|
|
paintType=pBackgroundPainter->GetPaintType();
|
|
clrBk=pBackgroundPainter->GetBkColor();
|
|
pOriginWnd=pBackgroundPainter->GetOriginWnd();
|
|
|
|
pBackgroundOrganizer->Detach(pMDIClientWnd);
|
|
bPaintBackground=TRUE;
|
|
}
|
|
#endif // OX_CUSTOMIZE_BACKGROUND
|
|
|
|
pMDIClientWnd->Detach();
|
|
|
|
VERIFY(m_MTIClientWnd.Attach((CMDIFrameWnd*)pWnd,m_dwStyle));
|
|
|
|
#ifdef OX_CUSTOMIZE_BACKGROUND
|
|
if(bPaintBackground)
|
|
{
|
|
ASSERT(pBackgroundOrganizer!=NULL);
|
|
VERIFY(pBackgroundOrganizer->Attach(&m_MTIClientWnd,&dib,
|
|
paintType,clrBk,pOriginWnd));
|
|
}
|
|
#endif // OX_CUSTOMIZE_BACKGROUND
|
|
}
|
|
else
|
|
{
|
|
VERIFY(m_MTIClientWnd.Attach((CMDIFrameWnd*)pWnd,m_dwStyle));
|
|
}
|
|
|
|
m_MTIClientWnd.GetTabCtrl()->SetOffset(m_dwOffset);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
void COXCustomizeTabbedMDIPage::GetVars()
|
|
{
|
|
m_bSupportTabbedMDI=m_MTIClientWnd.IsAttached();
|
|
m_dwOffset=(m_bSupportTabbedMDI ?
|
|
m_MTIClientWnd.GetTabCtrl()->GetOffset() : ID_TABOFFSET);
|
|
m_dwStyle=(m_bSupportTabbedMDI ?
|
|
m_MTIClientWnd.GetTabCtrl()->GetStyle() : DEFAULT_TABCTRLSTYLE);
|
|
|
|
// build tree control
|
|
//
|
|
m_treeTabCtrlSettings.DeleteAllItems();
|
|
|
|
// root item
|
|
int nImageIndex=m_treeTabCtrlSettings.
|
|
AddImage(IDB_OX_CUSTOMIZETABBEDMDI_SETTINGS,RGB(192,192,192));
|
|
ASSERT(nImageIndex!=-1);
|
|
CString sItem;
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDSETTINGS));//"Tab control settings"
|
|
HTREEITEM hRootItem=m_treeTabCtrlSettings.
|
|
AddControlGroup(sItem,NULL,TRUE,nImageIndex,nImageIndex);
|
|
ASSERT(hRootItem!=NULL);
|
|
m_treeTabCtrlSettings.SetItemState(hRootItem,TVIS_BOLD,TVIS_BOLD);
|
|
|
|
// orientation
|
|
nImageIndex=m_treeTabCtrlSettings.
|
|
AddImage(IDB_OX_CUSTOMIZETABBEDMDI_ORIENTATION,RGB(192,192,192));
|
|
ASSERT(nImageIndex!=-1);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDORIENTATION));//"Orientation"
|
|
HTREEITEM hGroupItem=m_treeTabCtrlSettings.
|
|
AddControlGroup(sItem,hRootItem,TRUE,nImageIndex,nImageIndex);
|
|
ASSERT(hGroupItem!=NULL);
|
|
m_treeTabCtrlSettings.SetItemState(hGroupItem,TVIS_BOLD,TVIS_BOLD);
|
|
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDLEFT));//"Left"
|
|
VERIFY(m_treeTabCtrlSettings.AddRadioButton(IDC_RADIO_ORIENT_LEFT,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDTOP));//"Top"
|
|
VERIFY(m_treeTabCtrlSettings.AddRadioButton(IDC_RADIO_ORIENT_TOP,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDRIGHT));//"Right"
|
|
VERIFY(m_treeTabCtrlSettings.AddRadioButton(IDC_RADIO_ORIENT_RIGHT,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDBOTTOM));//"Bottom"
|
|
VERIFY(m_treeTabCtrlSettings.AddRadioButton(IDC_RADIO_ORIENT_BOTTOM,
|
|
sItem,hGroupItem)!=NULL);
|
|
|
|
if((m_dwStyle&(TCS_VERTICAL|TCS_BOTTOM))==(TCS_VERTICAL|TCS_BOTTOM))
|
|
m_treeTabCtrlSettings.SetCheck(IDC_RADIO_ORIENT_RIGHT,OTITEM_CHECKED);
|
|
else if((m_dwStyle&TCS_VERTICAL)==TCS_VERTICAL)
|
|
m_treeTabCtrlSettings.SetCheck(IDC_RADIO_ORIENT_LEFT,OTITEM_CHECKED);
|
|
else if((m_dwStyle&TCS_BOTTOM)==TCS_BOTTOM)
|
|
m_treeTabCtrlSettings.SetCheck(IDC_RADIO_ORIENT_BOTTOM,OTITEM_CHECKED);
|
|
else
|
|
m_treeTabCtrlSettings.SetCheck(IDC_RADIO_ORIENT_TOP,OTITEM_CHECKED);
|
|
|
|
|
|
// appearance
|
|
nImageIndex=m_treeTabCtrlSettings.
|
|
AddImage(IDB_OX_CUSTOMIZETABBEDMDI_APPEARANCE,RGB(192,192,192));
|
|
ASSERT(nImageIndex!=-1);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDAPPEARENCE));//"Appearance"
|
|
hGroupItem=m_treeTabCtrlSettings.
|
|
AddControlGroup(sItem,hRootItem,TRUE,nImageIndex,nImageIndex);
|
|
ASSERT(hGroupItem!=NULL);
|
|
m_treeTabCtrlSettings.SetItemState(hGroupItem,TVIS_BOLD,TVIS_BOLD);
|
|
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDTABBUTTONS));//"Tab buttons"
|
|
VERIFY(m_treeTabCtrlSettings.AddRadioButton(IDC_RADIO_APPEARANCE_TAB_BUTTONS,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDPUSHBUTTONS));//"Push buttons"
|
|
VERIFY(m_treeTabCtrlSettings.AddRadioButton(IDC_RADIO_APPEARANCE_PUSH_BUTTONS,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDFLATBUTTONS));//"Flat buttons"
|
|
VERIFY(m_treeTabCtrlSettings.AddRadioButton(IDC_RADIO_APPEARANCE_FLAT_BUTTONS,
|
|
sItem,hGroupItem)!=NULL);
|
|
|
|
if((m_dwStyle&(TCS_BUTTONS|TCS_FLATBUTTONS))==(TCS_BUTTONS|TCS_FLATBUTTONS))
|
|
{
|
|
m_treeTabCtrlSettings.
|
|
SetCheck(IDC_RADIO_APPEARANCE_FLAT_BUTTONS,OTITEM_CHECKED);
|
|
}
|
|
else if((m_dwStyle&TCS_BUTTONS)==TCS_BUTTONS)
|
|
{
|
|
m_treeTabCtrlSettings.
|
|
SetCheck(IDC_RADIO_APPEARANCE_PUSH_BUTTONS,OTITEM_CHECKED);
|
|
}
|
|
else
|
|
{
|
|
m_treeTabCtrlSettings.
|
|
SetCheck(IDC_RADIO_APPEARANCE_TAB_BUTTONS,OTITEM_CHECKED);
|
|
}
|
|
|
|
|
|
// display
|
|
nImageIndex=m_treeTabCtrlSettings.
|
|
AddImage(IDB_OX_CUSTOMIZETABBEDMDI_DISPLAY,RGB(192,192,192));
|
|
ASSERT(nImageIndex!=-1);
|
|
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDDISPLAY));//"Display"
|
|
hGroupItem=m_treeTabCtrlSettings.
|
|
AddControlGroup(sItem,hRootItem,TRUE,nImageIndex,nImageIndex);
|
|
ASSERT(hGroupItem!=NULL);
|
|
m_treeTabCtrlSettings.SetItemState(hGroupItem,TVIS_BOLD,TVIS_BOLD);
|
|
|
|
// positioning
|
|
nImageIndex=m_treeTabCtrlSettings.
|
|
AddImage(IDB_OX_CUSTOMIZETABBEDMDI_POSITIONING,RGB(192,192,192));
|
|
ASSERT(nImageIndex!=-1);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDPOSITIONING));//"Positioning"
|
|
HTREEITEM hSubGroupItem=m_treeTabCtrlSettings.
|
|
AddControlGroup(sItem,hGroupItem,TRUE,nImageIndex,nImageIndex);
|
|
ASSERT(hSubGroupItem!=NULL);
|
|
m_treeTabCtrlSettings.SetItemState(hSubGroupItem,TVIS_BOLD,TVIS_BOLD);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDDISPLAY1ROW));//"Display only one row of tabs"
|
|
VERIFY(m_treeTabCtrlSettings.AddRadioButton(IDC_RADIO_POSITIONING_SINGLELINE,
|
|
sItem,hSubGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDDISPLAYMROWS));//"Displays multiple rows of tabs, if necessary"
|
|
VERIFY(m_treeTabCtrlSettings.AddRadioButton(IDC_RADIO_POSITIONING_MULTILINE,
|
|
sItem,hSubGroupItem)!=NULL);
|
|
|
|
if((m_dwStyle&TCS_MULTILINE)==TCS_MULTILINE)
|
|
m_treeTabCtrlSettings.SetCheck(IDC_RADIO_POSITIONING_MULTILINE,OTITEM_CHECKED);
|
|
else
|
|
m_treeTabCtrlSettings.SetCheck(IDC_RADIO_POSITIONING_SINGLELINE,OTITEM_CHECKED);
|
|
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDHIGHLIGHT));//"Items under the pointer are automatically highlighted"
|
|
VERIFY(m_treeTabCtrlSettings.AddCheckBox(IDC_CHECK_DISPLAY_HOTTRACK,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDWIDTH));//"Same width for all buttons"
|
|
VERIFY(m_treeTabCtrlSettings.AddCheckBox(IDC_CHECK_DISPLAY_FIXEDWIDTH,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDSTRETCH));//"Stretch tabs to fill the entire width of the control"
|
|
VERIFY(m_treeTabCtrlSettings.AddCheckBox(IDC_CHECK_DISPLAY_NORAGGEDRIGHT,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDOPPOSITE));//"Unused tabs move to the opposite side of the control"
|
|
VERIFY(m_treeTabCtrlSettings.AddCheckBox(IDC_CHECK_DISPLAY_SCROLLOPPOSITE,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDALIGNICON));//"Aligns an icon with the left edge of a fixed-width tab"
|
|
VERIFY(m_treeTabCtrlSettings.AddCheckBox(IDC_CHECK_DISPLAY_FORCEICONLEFT,
|
|
sItem,hGroupItem)!=NULL);
|
|
VERIFY(sItem.LoadString(IDS_OX_CSTMZETABBEDALIGNLABEL));//"Aligns a label with the left edge of a fixed-width tab"
|
|
VERIFY(m_treeTabCtrlSettings.AddCheckBox(IDC_CHECK_DISPLAY_FORCELABELLEFT,
|
|
sItem,hGroupItem)!=NULL);
|
|
|
|
if((m_dwStyle&TCS_HOTTRACK)==TCS_HOTTRACK)
|
|
m_treeTabCtrlSettings.SetCheck(IDC_CHECK_DISPLAY_HOTTRACK,OTITEM_CHECKED);
|
|
if((m_dwStyle&TCS_FIXEDWIDTH)==TCS_FIXEDWIDTH)
|
|
m_treeTabCtrlSettings.SetCheck(IDC_CHECK_DISPLAY_FIXEDWIDTH,OTITEM_CHECKED);
|
|
if((m_dwStyle&TCS_RAGGEDRIGHT)!=TCS_RAGGEDRIGHT)
|
|
m_treeTabCtrlSettings.SetCheck(IDC_CHECK_DISPLAY_NORAGGEDRIGHT,OTITEM_CHECKED);
|
|
if((m_dwStyle&TCS_SCROLLOPPOSITE)==TCS_SCROLLOPPOSITE)
|
|
m_treeTabCtrlSettings.SetCheck(IDC_CHECK_DISPLAY_SCROLLOPPOSITE,OTITEM_CHECKED);
|
|
if((m_dwStyle&TCS_FORCEICONLEFT)==TCS_FORCEICONLEFT)
|
|
m_treeTabCtrlSettings.SetCheck(IDC_CHECK_DISPLAY_FORCEICONLEFT,OTITEM_CHECKED);
|
|
if((m_dwStyle&TCS_FORCELABELLEFT)==TCS_FORCELABELLEFT)
|
|
m_treeTabCtrlSettings.SetCheck(IDC_CHECK_DISPLAY_FORCELABELLEFT,OTITEM_CHECKED);
|
|
|
|
//
|
|
/////////////////////////////////
|
|
}
|
|
|
|
void COXCustomizeTabbedMDIPage::OnCheckSupportTabbedmdi()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData(TRUE))
|
|
return;
|
|
|
|
m_treeTabCtrlSettings.EnableWindow(m_bSupportTabbedMDI);
|
|
GetDlgItem(IDC_OX_EDIT_OFFSET)->EnableWindow(m_bSupportTabbedMDI);
|
|
m_spinOffset.EnableWindow(m_bSupportTabbedMDI);
|
|
}
|