You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 2000-2001
|
|
//
|
|
// File: SelfDeletingPropertyPage.cpp
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
#include "stdafx.h"
|
|
#include "SelfDeletingPropertyPage.h"
|
|
|
|
IMPLEMENT_DYNCREATE(CSelfDeletingPropertyPage, CPropertyPage)
|
|
|
|
CSelfDeletingPropertyPage::CSelfDeletingPropertyPage ()
|
|
: CPropertyPage ()
|
|
{
|
|
m_pfnOldPropCallback = m_psp.pfnCallback;
|
|
m_psp.pfnCallback = PropSheetPageProc;
|
|
}
|
|
|
|
CSelfDeletingPropertyPage::CSelfDeletingPropertyPage (UINT nIDTemplate, UINT nIDCaption)
|
|
: CPropertyPage (nIDTemplate, nIDCaption)
|
|
{
|
|
m_pfnOldPropCallback = m_psp.pfnCallback;
|
|
m_psp.pfnCallback = PropSheetPageProc;
|
|
}
|
|
|
|
CSelfDeletingPropertyPage::CSelfDeletingPropertyPage (LPCTSTR lpszTemplateName, UINT nIDCaption)
|
|
: CPropertyPage (lpszTemplateName, nIDCaption)
|
|
{
|
|
m_pfnOldPropCallback = m_psp.pfnCallback;
|
|
m_psp.pfnCallback = PropSheetPageProc;
|
|
}
|
|
|
|
CSelfDeletingPropertyPage::~CSelfDeletingPropertyPage ()
|
|
{
|
|
}
|
|
|
|
UINT CALLBACK CSelfDeletingPropertyPage::PropSheetPageProc(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
LPPROPSHEETPAGE ppsp)
|
|
{
|
|
CSelfDeletingPropertyPage* pPage = (CSelfDeletingPropertyPage*)(ppsp->lParam);
|
|
ASSERT(pPage != NULL); //This is not a safe usage. pPage should be validated. Raid #550912, yanggao.
|
|
if( pPage == NULL )
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
UINT nResult = (*(pPage->m_pfnOldPropCallback))(hwnd, uMsg, ppsp);
|
|
if (uMsg == PSPCB_RELEASE)
|
|
{
|
|
delete pPage;
|
|
}
|
|
return nResult;
|
|
}
|