198 lines
3.8 KiB
C++
198 lines
3.8 KiB
C++
|
//Copyright (c) 1998 - 1999 Microsoft Corporation
|
||
|
|
||
|
/*
|
||
|
* COCPage.cpp
|
||
|
*
|
||
|
* A base class for an optional component wizard page.
|
||
|
*/
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "COCPage.h"
|
||
|
|
||
|
/*
|
||
|
* Class COCPageData
|
||
|
*/
|
||
|
|
||
|
COCPageData::COCPageData ()
|
||
|
{
|
||
|
m_fPageActivated = FALSE;
|
||
|
}
|
||
|
|
||
|
BOOL COCPageData::WasPageActivated ()
|
||
|
{
|
||
|
return(m_fPageActivated);
|
||
|
}
|
||
|
|
||
|
COCPageData* COCPage::GetPageData () const
|
||
|
{
|
||
|
return(m_pPageData);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Class COCPage
|
||
|
*/
|
||
|
|
||
|
COCPage::COCPage (IN COCPageData *pPageData)
|
||
|
{
|
||
|
ASSERT(pPageData);
|
||
|
|
||
|
m_hDlgWnd = NULL;
|
||
|
m_pPageData = pPageData;
|
||
|
}
|
||
|
|
||
|
COCPage::~COCPage ()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
BOOL COCPage::Initialize ()
|
||
|
{
|
||
|
dwFlags = PSP_USECALLBACK;
|
||
|
dwSize = sizeof(PROPSHEETPAGE);
|
||
|
hInstance = GetInstance();
|
||
|
lParam = (LPARAM)this;
|
||
|
pfnCallback = PropSheetPageProc;
|
||
|
pfnDlgProc = PropertyPageDlgProc;
|
||
|
pszTemplate = MAKEINTRESOURCE(GetPageID());
|
||
|
|
||
|
pszHeaderTitle = MAKEINTRESOURCE(GetHeaderTitleResource());
|
||
|
if (pszHeaderTitle != NULL)
|
||
|
{
|
||
|
dwFlags |= PSP_USEHEADERTITLE;
|
||
|
}
|
||
|
|
||
|
pszHeaderSubTitle = MAKEINTRESOURCE(GetHeaderSubTitleResource());
|
||
|
if (pszHeaderSubTitle != NULL)
|
||
|
{
|
||
|
dwFlags |= PSP_USEHEADERSUBTITLE;
|
||
|
}
|
||
|
|
||
|
return(pszTemplate != NULL ? TRUE : FALSE);
|
||
|
}
|
||
|
|
||
|
BOOL COCPage::OnNotify (IN HWND hDlgWnd, IN WPARAM /* wParam */, IN LPARAM lParam)
|
||
|
{
|
||
|
BOOL fApplied;
|
||
|
NMHDR *pnmh = (LPNMHDR) lParam;
|
||
|
|
||
|
switch(pnmh->code)
|
||
|
{
|
||
|
case PSN_SETACTIVE:
|
||
|
GetPageData()->m_fPageActivated = CanShow();
|
||
|
SetWindowLongPtr(hDlgWnd, DWLP_MSGRESULT, GetPageData()->m_fPageActivated ? 0 : -1);
|
||
|
PropSheet_SetWizButtons(GetParent(hDlgWnd), PSWIZB_NEXT | PSWIZB_BACK);
|
||
|
|
||
|
if (GetPageData()->m_fPageActivated)
|
||
|
{
|
||
|
GetHelperRoutines().ShowHideWizardPage(GetHelperRoutines().OcManagerContext,
|
||
|
TRUE);
|
||
|
OnActivation ();
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
|
||
|
case PSN_WIZNEXT:
|
||
|
fApplied = ApplyChanges();
|
||
|
SetWindowLongPtr(hDlgWnd, DWLP_MSGRESULT, fApplied ? 0 : -1);
|
||
|
break;
|
||
|
|
||
|
case PSN_WIZBACK:
|
||
|
OnDeactivation();
|
||
|
SetWindowLongPtr(hDlgWnd, DWLP_MSGRESULT, 0);
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
return(FALSE);
|
||
|
|
||
|
}
|
||
|
|
||
|
return(TRUE);
|
||
|
}
|
||
|
|
||
|
UINT CALLBACK COCPage::PropSheetPageProc (IN HWND /* hWnd */, IN UINT uMsg, IN LPPROPSHEETPAGE pPsp)
|
||
|
{
|
||
|
COCPage* pThis;
|
||
|
|
||
|
ASSERT(pPsp != NULL);
|
||
|
|
||
|
pThis = reinterpret_cast<COCPage*>(pPsp->lParam);
|
||
|
ASSERT(pThis != NULL);
|
||
|
|
||
|
switch(uMsg)
|
||
|
{
|
||
|
case PSPCB_RELEASE:
|
||
|
delete pThis;
|
||
|
}
|
||
|
|
||
|
return(1);
|
||
|
}
|
||
|
|
||
|
INT_PTR CALLBACK COCPage::PropertyPageDlgProc (IN HWND hDlgWnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
|
||
|
{
|
||
|
COCPage* pDlg;
|
||
|
|
||
|
if (uMsg == WM_INITDIALOG)
|
||
|
{
|
||
|
pDlg = reinterpret_cast<COCPage*>(LPPROPSHEETPAGE(lParam)->lParam);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
pDlg = reinterpret_cast<COCPage*>(GetWindowLongPtr(hDlgWnd, DWLP_USER));
|
||
|
}
|
||
|
|
||
|
if (pDlg == NULL)
|
||
|
{
|
||
|
return(0);
|
||
|
}
|
||
|
|
||
|
switch(uMsg)
|
||
|
{
|
||
|
case WM_INITDIALOG:
|
||
|
pDlg->SetDlgWnd(hDlgWnd);
|
||
|
SetWindowLongPtr(hDlgWnd, DWLP_USER, (LONG_PTR)pDlg);
|
||
|
return(pDlg->OnInitDialog(hDlgWnd, wParam, lParam));
|
||
|
|
||
|
case WM_NOTIFY:
|
||
|
return(pDlg->OnNotify(hDlgWnd, wParam, lParam));
|
||
|
|
||
|
case WM_COMMAND:
|
||
|
return(pDlg->OnCommand(hDlgWnd, wParam, lParam));
|
||
|
}
|
||
|
|
||
|
return(0);
|
||
|
}
|
||
|
|
||
|
|
||
|
VOID COCPage::OnActivation ()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
BOOL COCPage::OnCommand (IN HWND /* hDlgWnd */, IN WPARAM /* wParam */, IN LPARAM /* lParam */)
|
||
|
{
|
||
|
return(TRUE);
|
||
|
}
|
||
|
|
||
|
VOID COCPage::OnDeactivation ()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
BOOL COCPage::OnInitDialog(IN HWND /* hDlgWnd */, IN WPARAM /* wParam */, IN LPARAM /* lParam */ )
|
||
|
{
|
||
|
return(TRUE);
|
||
|
}
|
||
|
|
||
|
BOOL COCPage::ApplyChanges ()
|
||
|
{
|
||
|
return(TRUE);
|
||
|
}
|
||
|
|
||
|
VOID COCPage::SetDlgWnd (IN HWND hDlgWnd)
|
||
|
{
|
||
|
m_hDlgWnd = hDlgWnd;
|
||
|
}
|
||
|
|
||
|
BOOL COCPage::VerifyChanges ()
|
||
|
{
|
||
|
return(TRUE);
|
||
|
}
|