2025-11-27 16:46:48 +09:00

632 lines
18 KiB
C++

// OXCustomizeBackgroundPage.cpp : implementation file
//
// Version: 9.3
#include "stdafx.h"
#include "OXCustomizeBackgroundPage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// COXCustomizeBackgroundPage dialog
IMPLEMENT_DYNCREATE(COXCustomizeBackgroundPage, COXCustomizePage)
COXCustomizeBackgroundPage::COXCustomizeBackgroundPage()
{
//{{AFX_DATA_INIT(COXCustomizeBackgroundPage)
m_pHelpWnd=NULL;
m_nAlign = -1;
m_sFilename = _T("");
m_bOnlyClientArea = TRUE;
m_bPaintBackground = TRUE;
m_nImageSourceType = 0;
//}}AFX_DATA_INIT
m_clrBack=::GetSysColor(COLOR_WINDOW);
m_bUseDefaultImage=TRUE;
m_nDialogID=IDD;
m_sProfileName.Empty();
}
COXCustomizeBackgroundPage::~COXCustomizeBackgroundPage()
{
if(m_pHelpWnd != NULL)
{
m_pHelpWnd->Detach();
delete m_pHelpWnd;
}
}
BOOL COXCustomizeBackgroundPage::
InitializeBackgroundPainter(const BOOL bPaintBackground,
const BOOL bOnlyClientArea,
LPCTSTR lpszDIBResourceName,
const PaintType paintType/*=Tile*/,
const COLORREF clrBk/*=CLR_DEFAULT*/,
LPCTSTR lpszProfileName/*=_T("CustomizeBackgroundPainter")*/)
{
COXDIB dib;
if(lpszDIBResourceName!=NULL)
if(!dib.LoadResource(lpszDIBResourceName))
return FALSE;
return InitializeBackgroundPainter(bPaintBackground,bOnlyClientArea,
&dib,paintType,clrBk,lpszProfileName);
}
BOOL COXCustomizeBackgroundPage::
InitializeBackgroundPainter(const BOOL bPaintBackground,
const BOOL bOnlyClientArea,
const UINT nDIBResourceID,
const PaintType paintType/*=Tile*/,
const COLORREF clrBk/*=CLR_DEFAULT*/,
LPCTSTR lpszProfileName/*=_T("CustomizeBackgroundPainter")*/)
{
return InitializeBackgroundPainter(bPaintBackground,bOnlyClientArea,
MAKEINTRESOURCE(nDIBResourceID),paintType,clrBk,lpszProfileName);
}
BOOL COXCustomizeBackgroundPage::
InitializeBackgroundPainter(const BOOL bPaintBackground,
const BOOL bOnlyClientArea,
const CString& sDIBFileName,
const PaintType paintType/*=Tile*/,
const COLORREF clrBk/*=CLR_DEFAULT*/,
LPCTSTR lpszProfileName/*=_T("CustomizeBackgroundPainter")*/)
{
COXDIB dib;
if(!sDIBFileName.IsEmpty())
if(!dib.Read(sDIBFileName))
return FALSE;
m_sFilename=sDIBFileName;
return InitializeBackgroundPainter(bPaintBackground,bOnlyClientArea,
&dib,paintType,clrBk,lpszProfileName);
}
BOOL COXCustomizeBackgroundPage::
InitializeBackgroundPainter(const BOOL bPaintBackground,
const BOOL bOnlyClientArea,
const COXDIB* pDIB,
const PaintType paintType/*=Tile*/,
const COLORREF clrBk/*=CLR_DEFAULT*/,
LPCTSTR lpszProfileName/*=_T("CustomizeBackgroundPainter")*/)
{
m_bPaintBackground=bPaintBackground;
m_bOnlyClientArea=bOnlyClientArea;
m_bUseDefaultImage=TRUE;
if(lpszProfileName!=NULL)
{
m_sProfileName=lpszProfileName;
CWinApp* pApp=AfxGetApp();
ASSERT(pApp!=NULL);
m_bPaintBackground=pApp->GetProfileInt(m_sProfileName,
_T("PaintBackground"),m_bPaintBackground);
m_bOnlyClientArea=pApp->GetProfileInt(m_sProfileName,
_T("OnlyClientArea"),m_bOnlyClientArea);
m_sFilename=pApp->GetProfileString(m_sProfileName,
_T("ImageFileName"),m_sFilename);
m_nAlign=(int)pApp->GetProfileInt(lpszProfileName,
_T("PaintType"),(int)paintType);
m_clrBack=pApp->GetProfileInt(lpszProfileName,_T("BackgroundColor"),clrBk);
m_bUseDefaultImage=pApp->GetProfileInt(m_sProfileName,
_T("UseDefaultImage"),m_bUseDefaultImage);
}
if(pDIB!=NULL)
m_dibDefault=*pDIB;
else
m_dibDefault.Empty();
SetupBackgroundPainting();
return TRUE;
}
BOOL COXCustomizeBackgroundPage::OnCloseManager(BOOL bIsOk)
{
CWinApp* pApp=AfxGetApp();
ASSERT(pApp!=NULL);
if(bIsOk)
{
if(!ApplyChanges())
return FALSE;
if(!m_sProfileName.IsEmpty())
{
pApp->WriteProfileInt(m_sProfileName,_T("PaintBackground"),
m_bPaintBackground);
pApp->WriteProfileInt(m_sProfileName,_T("OnlyClientArea"),
m_bOnlyClientArea);
pApp->WriteProfileString(m_sProfileName,_T("ImageFileName"),
m_sFilename);
pApp->WriteProfileInt(m_sProfileName,_T("PaintType"),m_nAlign);
pApp->WriteProfileInt(m_sProfileName,_T("BackgroundColor"),m_clrBack);
pApp->WriteProfileInt(m_sProfileName,_T("UseDefaultImage"),
m_bUseDefaultImage);
}
}
else
{
if(!m_sProfileName.IsEmpty())
{
m_bPaintBackground=pApp->GetProfileInt(m_sProfileName,
_T("PaintBackground"),m_bPaintBackground);
m_bOnlyClientArea=pApp->GetProfileInt(m_sProfileName,
_T("OnlyClientArea"),m_bOnlyClientArea);
m_sFilename=pApp->GetProfileString(m_sProfileName,
_T("ImageFileName"),m_sFilename);
m_nAlign=(int)pApp->GetProfileInt(m_sProfileName,
_T("PaintType"),m_nAlign);
m_clrBack=pApp->GetProfileInt(m_sProfileName,
_T("BackgroundColor"),m_clrBack);
m_bUseDefaultImage=pApp->GetProfileInt(m_sProfileName,
_T("UseDefaultImage"),m_bUseDefaultImage);
SetupBackgroundPainting();
}
}
return TRUE;
}
void COXCustomizeBackgroundPage::DoDataExchange(CDataExchange* pDX)
{
COXCustomizePage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(COXCustomizeBackgroundPage)
DDX_Control(pDX, IDC_OX_SEPARATOR2, m_ctlSeparator2);
DDX_Control(pDX, IDC_OX_SEPARATOR1, m_ctlSeparator1);
DDX_Control(pDX, IDC_OX_FILENAME, m_cmbFilename);
DDX_Control(pDX, IDC_OX_BACK_COLOR, m_btnBackColor);
DDX_Radio(pDX, IDC_OX_ALIGN_TILE, m_nAlign);
DDX_CBString(pDX, IDC_OX_FILENAME, m_sFilename);
DDX_Check(pDX, IDC_OX_CHECK_ONLYCLIENT, m_bOnlyClientArea);
DDX_Check(pDX, IDC_OX_CHECK_PAINT_BACKGROUND, m_bPaintBackground);
DDX_Radio(pDX, IDC_OX_RADIO_BCKGND_IMG_SOURCE_DEFAULT, m_nImageSourceType);
//}}AFX_DATA_MAP
DDX_ColorPicker(pDX, IDC_OX_BACK_COLOR, m_clrBack);
}
BEGIN_MESSAGE_MAP(COXCustomizeBackgroundPage, COXCustomizePage)
//{{AFX_MSG_MAP(COXCustomizeBackgroundPage)
ON_BN_CLICKED(IDC_OX_ALIGN_BOTTOMCENTER, OnAlign)
ON_BN_CLICKED(IDC_OX_BACK_COLOR, OnBackColor)
ON_CBN_EDITCHANGE(IDC_OX_FILENAME, OnEditchangeFilename)
ON_CBN_SELCHANGE(IDC_OX_FILENAME, OnSelchangeFilename)
ON_WM_PALETTECHANGED()
ON_WM_QUERYNEWPALETTE()
ON_BN_CLICKED(IDC_OX_CHECK_PAINT_BACKGROUND, OnEnable)
ON_BN_CLICKED(IDC_OX_ALIGN_BOTTOMLEFT, OnAlign)
ON_BN_CLICKED(IDC_OX_ALIGN_BOTTOMRIGHT, OnAlign)
ON_BN_CLICKED(IDC_OX_ALIGN_CENTER, OnAlign)
ON_BN_CLICKED(IDC_OX_ALIGN_CENTERLEFT, OnAlign)
ON_BN_CLICKED(IDC_OX_ALIGN_CENTERRIGHT, OnAlign)
ON_BN_CLICKED(IDC_OX_ALIGN_STRETCH, OnAlign)
ON_BN_CLICKED(IDC_OX_ALIGN_TILE, OnAlign)
ON_BN_CLICKED(IDC_OX_ALIGN_TOPCENTER, OnAlign)
ON_BN_CLICKED(IDC_OX_ALIGN_TOPLEFT, OnAlign)
ON_BN_CLICKED(IDC_OX_ALIGN_TOPRIGHT, OnAlign)
ON_BN_CLICKED(IDC_OX_RADIO_BCKGND_IMG_SOURCE_DEFAULT, OnRadioBackgroundImageSourceDefault)
ON_BN_CLICKED(IDC_OX_RADIO_BCKGND_IMG_SOURCE_FILENAME, OnRadioBackgroundImageSourceFilename)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_KICKIDLE, OnKickIdle)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COXCustomizeBackgroundPage message handlers
BOOL COXCustomizeBackgroundPage::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 COXCustomizeBackgroundPage::Unload()
{
// add here code for cleaning up all objects created by demo
//
//
//////////////////////////////////////////////////////////////////////////
COXCustomizePage::Unload();
}
void COXCustomizeBackgroundPage::OnInitDialog()
{
// must call default implementation
COXCustomizePage::OnInitDialog();
// add here initialization code for your demo dialog. Treat it as a
// normal CDialog::OnInitDialog function
m_cmbFilename.
SetAutoPersistent(_T("CustomizeBackgroundPainter_ImageFileName"));
for(int nIndex=4; nIndex<OX_HISTORY_COMBO_MAX_TOOLBUTTONS; nIndex++)
{
m_cmbFilename.ShowButton(nIndex,FALSE);
}
CToolBar* pToolbar=m_cmbFilename.GetToolBar();
pToolbar->ModifyStyle(NULL,TBSTYLE_FLAT);
m_cmbFilename.RefreshToolbar();
m_btnBackColor.SetToolTip(TRUE);
m_btnBackColor.SetDefaultColor(::GetSysColor(COLOR_BTNFACE));
CWnd* pCtrl=GetDlgItem(IDC_OX_IMAGE);
ASSERT(pCtrl!=NULL);
CRect rect;
pCtrl->GetWindowRect(rect);
pCtrl->DestroyWindow();
ScreenToClient(rect);
m_pictureWnd.Create(NULL,NULL,WS_CHILD|WS_VISIBLE,rect,this,IDC_OX_IMAGE);
if(!m_sFilename.IsEmpty() && !m_bUseDefaultImage)
{
VERIFY(m_backgroundPainterOrganizer.Attach(&m_pictureWnd,
m_sFilename,(PaintType)m_nAlign,m_clrBack));
}
else
{
VERIFY(m_backgroundPainterOrganizer.Attach(&m_pictureWnd,
&m_dibDefault,(PaintType)m_nAlign,m_clrBack));
}
m_pictureWnd.ModifyStyleEx(NULL,WS_EX_CLIENTEDGE,SWP_DRAWFRAME);
m_pictureWnd.RedrawWindow();
m_nImageSourceType=(m_bUseDefaultImage ? 0 : 1);
// layout
//
m_LayoutManager.TieChild(&m_ctlSeparator1,
OX_LMS_LEFT|OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(&m_ctlSeparator2,
OX_LMS_LEFT|OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(&m_cmbFilename,
OX_LMS_LEFT|OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(IDC_OX_GROUP_PAINT_TYPE,
OX_LMS_LEFT|OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(IDC_OX_ALIGN_STRETCH,OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(IDC_OX_ALIGN_TOPRIGHT,OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(IDC_OX_ALIGN_CENTERRIGHT,OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(IDC_OX_ALIGN_BOTTOMRIGHT,OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(IDC_OX_STATIC_BACKGROUND_COLOR,OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(&m_btnBackColor,OX_LMS_RIGHT,OX_LMT_SAME);
m_LayoutManager.TieChild(IDC_OX_IMAGE,OX_LMS_ANY,OX_LMT_SAME);
//
///////////////////////////////////////
if (m_bUseDefaultImage)
m_sFilename = _T("");
UpdateData(FALSE);
OnEnable();
m_bInitialized=TRUE;
}
void COXCustomizeBackgroundPage::OnAlign()
{
// TODO: Add your control notification handler code here
if(!m_bInitialized)
return;
UpdateData(TRUE);
m_backgroundPainterOrganizer.SetPaintType(&m_pictureWnd,(PaintType)m_nAlign);
}
void COXCustomizeBackgroundPage::OnBackColor()
{
// TODO: Add your control notification handler code here
if(!m_bInitialized)
return;
UpdateData(TRUE);
m_backgroundPainterOrganizer.SetBkColor(&m_pictureWnd,m_clrBack);
}
void COXCustomizeBackgroundPage::OnEditchangeFilename()
{
// TODO: Add your control notification handler code here
if(!m_bInitialized)
return;
UpdateData(TRUE);
m_backgroundPainterOrganizer.SetWallpaper(&m_pictureWnd,m_sFilename);
}
void COXCustomizeBackgroundPage::OnSelchangeFilename()
{
// TODO: Add your control notification handler code here
if(!m_bInitialized)
return;
if(m_cmbFilename.GetCurSel()!=CB_ERR)
{
m_cmbFilename.GetLBText(m_cmbFilename.GetCurSel(),m_sFilename);
m_backgroundPainterOrganizer.SetWallpaper(&m_pictureWnd,m_sFilename);
}
}
void COXCustomizeBackgroundPage::OnPaletteChanged(CWnd* pFocusWnd)
{
COXCustomizePage::OnPaletteChanged(pFocusWnd);
// TODO: Add your message handler code here
SendMessageToDescendants(WM_PALETTECHANGED,(WPARAM)((HWND)*pFocusWnd),NULL);
}
BOOL COXCustomizeBackgroundPage::OnQueryNewPalette()
{
// TODO: Add your message handler code here and/or call default
SendMessageToDescendants(WM_QUERYNEWPALETTE,NULL,NULL);
return COXCustomizePage::OnQueryNewPalette();
}
LRESULT COXCustomizeBackgroundPage::OnKickIdle(WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(wParam);
UNREFERENCED_PARAMETER(lParam);
// Update the context list
m_cmbFilename.OnIdle();
return TRUE;
}
BOOL COXCustomizeBackgroundPage::ApplyChanges()
{
if(!UpdateData(TRUE))
return FALSE;
m_bUseDefaultImage=(m_nImageSourceType==0);
SetupBackgroundPainting();
return TRUE;
}
void COXCustomizeBackgroundPage::SetupBackgroundPainting()
{
CWnd* pWnd=AfxGetMainWnd();
ASSERT(pWnd!=NULL && ::IsWindow(pWnd->GetSafeHwnd()));
CRect rect;
pWnd->GetWindowRect(&rect);
pWnd->InvalidateRect(&rect);
pWnd->SendMessage(WM_ERASEBKGND);
POSITION pos=NULL;
COXBackgroundPainter* pBackgroundPainter=
m_backgroundPainterOrganizer.GetFirstPainter(pos);
COXDIB dib=((pBackgroundPainter!=NULL && !m_bUseDefaultImage) ?
*pBackgroundPainter->GetWallpaperImage() : m_dibDefault);
if(!m_bPaintBackground)
{
if(m_backgroundPainterOrganizer.IsAttachedFrame())
VERIFY(m_backgroundPainterOrganizer.DetachFrame());
else
VERIFY(m_backgroundPainterOrganizer.Detach(NULL));
// restore the state of the "Preview" window
if(::IsWindow(m_pictureWnd.GetSafeHwnd()))
{
VERIFY(m_backgroundPainterOrganizer.Attach(&m_pictureWnd,&dib,
(PaintType)m_nAlign,m_clrBack));
}
return;
}
if(m_bOnlyClientArea && m_backgroundPainterOrganizer.IsAttachedFrame())
{
ASSERT_KINDOF(CFrameWnd,pWnd);
VERIFY(m_backgroundPainterOrganizer.DetachFrame());
// restore the state of the "Preview" window
if(::IsWindow(m_pictureWnd.GetSafeHwnd()))
{
VERIFY(m_backgroundPainterOrganizer.Attach(&m_pictureWnd,&dib,
(PaintType)m_nAlign,m_clrBack));
}
if(pWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd)))
{
CWnd* pMDIClient=CWnd::FromHandlePermanent(((CMDIFrameWnd*)pWnd)->
m_hWndMDIClient);
ASSERT(pMDIClient!=NULL);
// hook MDIClient window
VERIFY(m_backgroundPainterOrganizer.Attach(pMDIClient,&dib,
(PaintType)m_nAlign,m_clrBack));
}
}
else if(!m_bOnlyClientArea && !m_backgroundPainterOrganizer.IsAttachedFrame())
{
if(pWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd)))
{
CWnd* pMDIClient=CWnd::FromHandlePermanent(((CMDIFrameWnd*)pWnd)->
m_hWndMDIClient);
ASSERT(pMDIClient!=NULL);
if(m_backgroundPainterOrganizer.IsAttached(pMDIClient))
VERIFY(m_backgroundPainterOrganizer.Detach(pMDIClient));
}
VERIFY(m_backgroundPainterOrganizer.AttachFrame((CFrameWnd*)pWnd,&dib,
(PaintType)m_nAlign,m_clrBack));
}
else
{
if(pWnd->IsKindOf(RUNTIME_CLASS(CFrameWnd)))
{
if(m_pHelpWnd)
{
m_pHelpWnd->Detach();
delete m_pHelpWnd;
}
m_pHelpWnd = new COXHelperWnd;
if(m_bOnlyClientArea)
{
if(pWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd)))
{
// check if MDIClient has already been attached to a CWnd object
CWnd* pMDIClient=
CWnd::FromHandlePermanent(((CMDIFrameWnd*)pWnd)->
m_hWndMDIClient);
// if MDIClient is not attached yet
if(pMDIClient==NULL)
{
// then attach it
VERIFY(m_pHelpWnd->Attach(((CMDIFrameWnd*)pWnd)->
m_hWndMDIClient));
pMDIClient=m_pHelpWnd;
}
if(!m_backgroundPainterOrganizer.IsAttached(pMDIClient))
{
// hook MDIClient window
VERIFY(m_backgroundPainterOrganizer.Attach(pMDIClient,&dib,
(PaintType)m_nAlign,m_clrBack));
}
}
}
else
{
if(pWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd)))
{
// check if MDIClient has already been attached to a CWnd object
CWnd* pMDIClient=
CWnd::FromHandlePermanent(((CMDIFrameWnd*)pWnd)->
m_hWndMDIClient);
// if MDIClient is not attached yet
if(pMDIClient==NULL)
{
if(!m_backgroundPainterOrganizer.IsAttached(pMDIClient))
{
// then attach it
VERIFY(m_pHelpWnd->Attach(((CMDIFrameWnd*)pWnd)->
m_hWndMDIClient));
}
}
}
if(!m_backgroundPainterOrganizer.IsAttachedFrame())
{
VERIFY(!m_backgroundPainterOrganizer.
AttachFrame((CFrameWnd*)pWnd,&dib,
(PaintType)m_nAlign,m_clrBack));
}
}
}
}
// restore the state of the "Preview" window
if(::IsWindow(m_pictureWnd.GetSafeHwnd()))
{
VERIFY(m_backgroundPainterOrganizer.
SetOriginWnd(&m_pictureWnd,NULL));
}
if(!m_sFilename.IsEmpty() && !m_bUseDefaultImage)
m_backgroundPainterOrganizer.SetWallpaper(NULL,m_sFilename,FALSE);
else
m_backgroundPainterOrganizer.SetWallpaper(NULL,&m_dibDefault,FALSE);
m_backgroundPainterOrganizer.SetBkColor(NULL,m_clrBack,FALSE);
m_backgroundPainterOrganizer.SetPaintType(NULL,(PaintType)m_nAlign,TRUE);
}
void COXCustomizeBackgroundPage::OnRadioBackgroundImageSourceDefault()
{
// TODO: Add your control notification handler code here
if(!UpdateData(TRUE))
return;
m_cmbFilename.EnableWindow(FALSE);
m_bUseDefaultImage = TRUE;
m_backgroundPainterOrganizer.SetWallpaper(&m_pictureWnd,&m_dibDefault);
m_sFilename = _T("");
UpdateData(FALSE);
}
void COXCustomizeBackgroundPage::OnRadioBackgroundImageSourceFilename()
{
// TODO: Add your control notification handler code here
if(!UpdateData(TRUE))
return;
m_cmbFilename.EnableWindow(TRUE);
m_cmbFilename.RefreshToolbar();
m_bUseDefaultImage = FALSE;
m_backgroundPainterOrganizer.SetWallpaper(&m_pictureWnd,m_sFilename);
}
void COXCustomizeBackgroundPage::OnEnable()
{
UpdateData(TRUE);
GetDlgItem(IDC_OX_GROUP_PAINT_TYPE)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_TILE)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_STRETCH)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_TOPLEFT)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_CENTERLEFT)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_BOTTOMLEFT)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_CHECK_ONLYCLIENT)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_TOPCENTER)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_CENTER)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_BOTTOMCENTER)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_TOPRIGHT)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_CENTERRIGHT)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_ALIGN_BOTTOMRIGHT)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_BACK_COLOR)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_RADIO_BCKGND_IMG_SOURCE_DEFAULT)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_RADIO_BCKGND_IMG_SOURCE_FILENAME)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_STATIC_BACKGROUND_COLOR)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_SEPARATOR2)->EnableWindow(m_bPaintBackground);
GetDlgItem(IDC_OX_IMAGE)->EnableWindow(m_bPaintBackground);
m_cmbFilename.EnableWindow(!m_bUseDefaultImage && m_bPaintBackground);
}