mirror of https://github.com/tongzx/nt5src
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.
235 lines
5.8 KiB
235 lines
5.8 KiB
//
|
|
// Application Verifier UI
|
|
// Copyright (c) Microsoft Corporation, 2001
|
|
//
|
|
//
|
|
//
|
|
// module: ChooseExe.cpp
|
|
// author: CLupu
|
|
// created: 04/13/2001
|
|
//
|
|
// Description:
|
|
//
|
|
// "Select individual tests" wizard page class.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "appverif.h"
|
|
|
|
#include "Options.h"
|
|
#include "AVUtil.h"
|
|
#include "AVGlobal.h"
|
|
#include "Setting.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
DWORD g_dwRegFlags;
|
|
TCHAR g_szCrashDumpFile[MAX_PATH];
|
|
|
|
//
|
|
// Help IDs
|
|
//
|
|
|
|
static DWORD MyHelpIds[] =
|
|
{
|
|
0, 0
|
|
};
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COptionsPage property page
|
|
|
|
IMPLEMENT_DYNCREATE(COptionsPage, CAppverifPage)
|
|
|
|
COptionsPage::COptionsPage() : CAppverifPage(COptionsPage::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(COptionsPage)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_nIssues = 0;
|
|
}
|
|
|
|
COptionsPage::~COptionsPage()
|
|
{
|
|
}
|
|
|
|
void COptionsPage::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CAppverifPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(COptionsPage)
|
|
DDX_Control(pDX, IDC_ISSUES, m_IssuesList);
|
|
DDX_Control(pDX, IDC_CRASHDUMP_FILE, m_CrashDumpFile);
|
|
DDX_Control(pDX, IDC_CREATE_CRASHDUMP_FILE, m_CreateCrashDumpFile);
|
|
DDX_Control(pDX, IDC_OPTIONS_NEXTDESCR_STATIC, m_NextDescription);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(COptionsPage, CAppverifPage)
|
|
//{{AFX_MSG_MAP(COptionsPage)
|
|
ON_MESSAGE( WM_HELP, OnHelp )
|
|
ON_WM_CONTEXTMENU()
|
|
ON_BN_CLICKED(IDC_CREATE_CRASHDUMP_FILE, OnCheckCreateCrashDumpFile)
|
|
ON_BN_CLICKED(IDC_BROWSE_CRASHDUMP, OnBrowseCrashDumpFile)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
ULONG COptionsPage::GetDialogId() const
|
|
{
|
|
return IDD_OPTIONS_PAGE;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
void COptionsPage::InsertIssue( DWORD idResIssue )
|
|
{
|
|
TCHAR szIssue[128];
|
|
|
|
VERIFY( AVLoadString( idResIssue, szIssue, ARRAY_LENGTH( szIssue ) ) );
|
|
|
|
m_IssuesList.InsertItem(m_nIssues, szIssue);
|
|
m_IssuesList.SetCheck(m_nIssues, TRUE);
|
|
|
|
g_dwRegFlags |= g_AllNamesAndBits[ m_nIssues ].m_dwBit;
|
|
|
|
m_nIssues++;
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COptionsPage message handlers
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
LONG COptionsPage::OnHelp( WPARAM wParam, LPARAM lParam )
|
|
{
|
|
LONG lResult = 0;
|
|
LPHELPINFO lpHelpInfo = (LPHELPINFO)lParam;
|
|
|
|
::WinHelp(
|
|
(HWND) lpHelpInfo->hItemHandle,
|
|
g_szAVHelpFile,
|
|
HELP_WM_HELP,
|
|
(DWORD_PTR) MyHelpIds );
|
|
|
|
return lResult;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
void COptionsPage::OnBrowseCrashDumpFile()
|
|
{
|
|
TCHAR szFilter[] = _T("Memory dump files (*.dmp)\0*.dmp\0");
|
|
OPENFILENAME ofn;
|
|
|
|
ofn.lStructSize = sizeof(OPENFILENAME);
|
|
ofn.hwndOwner = m_hWndTop;
|
|
ofn.hInstance = NULL;
|
|
ofn.lpstrFilter = szFilter;
|
|
ofn.lpstrCustomFilter = NULL;
|
|
ofn.nMaxCustFilter = 0;
|
|
ofn.nFilterIndex = 0;
|
|
ofn.lpstrFile = g_szCrashDumpFile;
|
|
ofn.nMaxFile = MAX_PATH;
|
|
ofn.lpstrFileTitle = NULL;
|
|
ofn.nMaxFileTitle = 0;
|
|
ofn.lpstrInitialDir = NULL;
|
|
ofn.lpstrTitle = _T("Choose the crash dump file");
|
|
ofn.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
|
|
ofn.lpstrDefExt = _T("DMP");
|
|
|
|
if ( !GetOpenFileName(&ofn) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_CrashDumpFile.SetWindowText(g_szCrashDumpFile);
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
void COptionsPage::OnContextMenu(CWnd* pWnd, CPoint point)
|
|
{
|
|
::WinHelp(
|
|
pWnd->m_hWnd,
|
|
g_szAVHelpFile,
|
|
HELP_CONTEXTMENU,
|
|
(DWORD_PTR) MyHelpIds );
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
LRESULT COptionsPage::OnWizardNext()
|
|
{
|
|
//
|
|
// Create the dwRegFlags that needs to be passed arround.
|
|
//
|
|
|
|
g_dwRegFlags = 0;
|
|
|
|
for( int uCrtBit = 0; uCrtBit < ARRAY_LENGTH( g_AllNamesAndBits ); uCrtBit++ )
|
|
{
|
|
m_IssuesList.GetCheck( uCrtBit );
|
|
|
|
if( m_IssuesList.GetCheck( uCrtBit ) )
|
|
{
|
|
g_dwRegFlags |= g_AllNamesAndBits[ uCrtBit ].m_dwBit;
|
|
}
|
|
}
|
|
|
|
GoingToNextPageNotify( IDD_STARTAPP_PAGE );
|
|
|
|
return IDD_STARTAPP_PAGE;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
BOOL COptionsPage::OnSetActive()
|
|
{
|
|
ASSERT_VALID( m_pParentSheet );
|
|
|
|
m_pParentSheet->SetWizardButtons( PSWIZB_BACK | PSWIZB_NEXT );
|
|
|
|
return CAppverifPage::OnSetActive();
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
void COptionsPage::OnCheckCreateCrashDumpFile()
|
|
{
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
BOOL COptionsPage::OnInitDialog()
|
|
{
|
|
CAppverifPage::OnInitDialog();
|
|
|
|
g_dwRegFlags = 0;
|
|
|
|
m_IssuesList.SetExtendedStyle(LVS_EX_CHECKBOXES);
|
|
|
|
m_IssuesList.InsertColumn(0, _T("Issue Description"), LVCFMT_LEFT, 250);
|
|
|
|
for( int uCrtBit = 0; uCrtBit < ARRAY_LENGTH( g_AllNamesAndBits ); uCrtBit++ )
|
|
{
|
|
InsertIssue( g_AllNamesAndBits[ uCrtBit ].m_uNameStringId );
|
|
}
|
|
|
|
ExpandEnvironmentStrings(_T("%windir%\\AppVerifier.dmp"), g_szCrashDumpFile, MAX_PATH);
|
|
|
|
m_CrashDumpFile.SetWindowText(g_szCrashDumpFile);
|
|
|
|
m_CreateCrashDumpFile.SetCheck(1);
|
|
|
|
AVSetWindowText( m_NextDescription, IDS_OPTIONS_NEXTDESCR_STATIC );
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COptionsPage message handlers
|