windows-nt/Source/XPSP1/NT/sdktools/verifier/verfpage.cpp
2020-09-26 16:20:57 +08:00

148 lines
3.4 KiB
C++

//
// Driver Verifier UI
// Copyright (c) Microsoft Corporation, 1999
//
//
//
// module: VerfPage.cpp
// author: DMihai
// created: 11/1/00
//
// Description:
//
#include "stdafx.h"
#include "verifier.h"
#include "VerfPage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//
// Previous page IDs - used for implementing the "back"
// button functionality
//
CPtrArray g_aPageIds;
//
// The one and only "slow progress" dialog
//
CSlowProgressDlg g_SlowProgressDlg;
/////////////////////////////////////////////////////////////////////////////
// CVerifierPropertyPage property page
IMPLEMENT_DYNAMIC(CVerifierPropertyPage, CPropertyPage)
CVerifierPropertyPage::CVerifierPropertyPage(ULONG uDialogId) :
CPropertyPage( uDialogId )
{
//{{AFX_DATA_INIT(CVerifierPropertyPage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CVerifierPropertyPage::~CVerifierPropertyPage()
{
}
BEGIN_MESSAGE_MAP(CVerifierPropertyPage, CPropertyPage)
//{{AFX_MSG_MAP(CVerifierPropertyPage)
ON_WM_HELPINFO()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
ULONG CVerifierPropertyPage::GetDialogId() const
{
//
// Oops, how did we get here ?!?
// This is a virtual pure function.
//
//ASSERT( FALSE );
return 0;
}
/////////////////////////////////////////////////////////////////////////////
//
// Return the previous page ID, based on our history array
// and remove it from the array because will activate. Called
// by our property pages when the "back" button is clicked
//
ULONG CVerifierPropertyPage::GetAndRemovePreviousDialogId()
{
ULONG uPrevId;
INT_PTR nPageIdsArraySize;
nPageIdsArraySize = g_aPageIds.GetSize();
ASSERT( nPageIdsArraySize > 0 );
uPrevId = PtrToUlong( g_aPageIds.GetAt( nPageIdsArraySize - 1 ) );
g_aPageIds.RemoveAt( nPageIdsArraySize - 1 );
return uPrevId;
}
/////////////////////////////////////////////////////////////////////////////
//
// Property pages derived from this class should notify us
// whenever we go to a next page to record the current page ID in
// the global array g_aPageIds
//
VOID CVerifierPropertyPage::GoingToNextPageNotify( LRESULT lNextPageId )
{
ULONG uMyDialogId;
if( -1 != lNextPageId )
{
//
// Will go to the next page. Add our ID to the global IDs array
// used for implementing the "back" button functionality.
//
uMyDialogId = GetDialogId();
ASSERT( ( 0 == g_aPageIds.GetSize() ) || ( ULongToPtr( uMyDialogId ) != g_aPageIds.GetAt( g_aPageIds.GetSize() - 1 ) ) );
g_aPageIds.Add( ULongToPtr( uMyDialogId ) );
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Use this to kill any currently running worker threads
//
BOOL CVerifierPropertyPage::OnQueryCancel( )
{
g_SlowProgressDlg.KillWorkerThread();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
LRESULT CVerifierPropertyPage::OnWizardBack()
{
return GetAndRemovePreviousDialogId();
}
/////////////////////////////////////////////////////////////////////////////
// CVerifierPropertyPage message handlers
BOOL CVerifierPropertyPage::OnHelpInfo(HELPINFO* pHelpInfo)
{
return TRUE;
}