// ==========================================================================
// Class Implementation: COXCustomizePage
// ==========================================================================
// 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"
// v93 update 03 - 64-bit
#include "UTB64Bit.h"
#include "OXCustomizePage.h"
#include "OXCustomizeManager.h"
#ifndef __OXMFCIMPL_H__
#if _MFC_VER < 0x0700
#include <..\src\afximpl.h>
#else
#include <..\src\mfc\afximpl.h>
#endif
#define __OXMFCIMPL_H__
#endif
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
const int IDC_DEFAULTPAGE=1000;
IMPLEMENT_DYNCREATE(COXCustomizePage, CWnd)
/////////////////////////////////////////////////////////////////////////////
// COXCustomizePage
COXCustomizePage::COXCustomizePage() :
m_nDialogID(0xffffffff),
m_pCustomizeManager(NULL),
m_sProfileName(_T("")),
m_bInitialized(FALSE)
{
#ifndef _AFX_NO_OCC_SUPPORT
m_pOccDialogInfo = NULL;
#endif
}
COXCustomizePage::~COXCustomizePage()
{
}
BEGIN_MESSAGE_MAP(COXCustomizePage, CWnd)
//{{AFX_MSG_MAP(COXCustomizePage)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COXCustomizePage message handlers
// virtual override of CWnd::Create
BOOL COXCustomizePage::Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd, CRect rect,
UINT nID, DWORD dwStyle/*=WS_VISIBLE|WS_CHILD*/)
{
ASSERT(pParentWnd!=NULL);
ASSERT(lpszTemplateName!=NULL);
// initialize common controls
VERIFY(AfxDeferRegisterClass(AFX_WNDCOMMCTLS_REG));
BOOL bShowWindow=((dwStyle&WS_VISIBLE)==WS_VISIBLE);
dwStyle&=~WS_VISIBLE;
// call PreCreateWindow to get prefered extended style
CREATESTRUCT cs={ 0 };
cs.style=dwStyle;
if(!PreCreateWindow(cs))
return FALSE;
// create a modeless dialog
if(!CreateDlg(lpszTemplateName, pParentWnd))
return FALSE;
// we use the style from the template - but make sure that
// the WS_BORDER bit is correct
// the WS_BORDER bit will be whatever is in dwRequestedStyle
ModifyStyle(WS_BORDER|WS_CAPTION,(cs.style&~(WS_BORDER|WS_CAPTION))|WS_CHILD);
ModifyStyleEx(WS_EX_CLIENTEDGE,(cs.dwExStyle&~WS_EX_CLIENTEDGE));
SetDlgCtrlID(nID);
// initialize controls etc
if(!ExecuteDlgInit(lpszTemplateName))
return FALSE;
// give the page an opportunity to initialize its contents
OnInitDialog();
// force the size requested
SetWindowPos(NULL, rect.left, rect.top,
rect.right - rect.left, rect.bottom - rect.top,
SWP_NOZORDER|SWP_NOACTIVATE);
// make visible if requested
if(bShowWindow)
ShowWindow(SW_NORMAL);
return TRUE;
}
BOOL COXCustomizePage::Load(const COXCustomizeManager* pCustomizeManager)
{
ASSERT(m_nDialogID!=0xffffffff);
ASSERT(pCustomizeManager!=NULL);
ASSERT(m_pCustomizeManager==NULL || m_pCustomizeManager==pCustomizeManager);
if(::IsWindow(GetSafeHwnd()))
{
ASSERT(m_pCustomizeManager==pCustomizeManager);
ShowWindow(SW_SHOW);
return TRUE;
}
else
{
m_pCustomizeManager=(COXCustomizeManager*)pCustomizeManager;
if(!Create(MAKEINTRESOURCE(m_nDialogID),m_pCustomizeManager->GetSite(),
CRect(0,0,0,0),IDC_DEFAULTPAGE))
{
m_pCustomizeManager=NULL;
return FALSE;
}
return TRUE;
}
}
void COXCustomizePage::Unload()
{
if(::IsWindow(GetSafeHwnd()))
{
ShowWindow(SW_HIDE);
}
}
void COXCustomizePage::OnDestroy()
{
// TODO: Add your message handler code here
if(m_LayoutManager.IsAttached())
m_LayoutManager.Detach();
m_bInitialized=FALSE;
CWnd::OnDestroy();
}
BOOL COXCustomizePage::PreTranslateMessage(MSG* pMsg)
{
ASSERT(pMsg!=NULL);
ASSERT_VALID(this);
// allow tooltip messages to be filtered
if(CWnd::PreTranslateMessage(pMsg))
return TRUE;
// don't translate dialog messages when in Shift+F1 help mode
CFrameWnd* pFrameWnd=GetTopLevelFrame();
if(pFrameWnd!=NULL && pFrameWnd->m_bHelpMode)
return FALSE;
// since 'IsDialogMessage' will eat frame window accelerators,
// we call all frame windows' PreTranslateMessage first
pFrameWnd=GetParentFrame(); // start with first parent frame
while(pFrameWnd!=NULL)
{
// allow owner & frames to translate before IsDialogMessage does
if(pFrameWnd->PreTranslateMessage(pMsg))
return TRUE;
// try parent frames until there are no parent frames
pFrameWnd=pFrameWnd->GetParentFrame();
}
// don't call IsDialogMessage if demo is empty
if(::GetWindow(GetSafeHwnd(),GW_CHILD)==NULL)
return FALSE;
// filter both messages to demo children
return PreTranslateInput(pMsg);
}
BOOL COXCustomizePage::SaveWorkspaceState()
{
return TRUE;
}
#ifndef _AFX_NO_OCC_SUPPORT
BOOL COXCustomizePage::SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo)
{
m_pOccDialogInfo = pOccDialogInfo;
return TRUE;
}
#endif //!_AFX_NO_OCC_SUPPORT
BOOL COXCustomizePage::OnCmdMsg( UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo )
{
#ifdef OX_CUSTOMPAGE_KEYSOKCANCEL
if (nID==IDCANCEL || nID==IDOK)
return m_pCustomizeManager->OnCmdMsg(nID, nCode, pExtra,pHandlerInfo);
else
#endif
return CWnd::OnCmdMsg(nID, nCode, pExtra,pHandlerInfo);
}