⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testwizardinfo.cpp

📁 WTL8.0 包含的头文件 例子
💻 CPP
📖 第 1 页 / 共 2 页
字号:

#include "stdafx.h"
#include "TestWizardInfo.h"

#include <HtmlHelp.h>
#include <mapi.h>

// NOTE: These "Display Name" string arrays depends on the enumeration
//  value corresponding to the index into the array.
static LPCTSTR s_testWizardOutputTypeDisplayName[eOutput_Last+1] = {
	_T("Copy to Clipboard"),
	_T("Send e-mail"),
	_T("Save to file"),
};

static LPCTSTR s_testWizardOutputFileEncodingDisplayName[eEncoding_Last+1] = {
	_T("ASCII"),
	_T("Unicode (UCS-2)"),
	_T("Unicode (UTF-8)"),
};

CTestWizardInfo::CTestWizardInfo() :
	m_showWelcome(false),
	m_recurse(false),
	m_filter(s_allFiles),
	m_outputFileEncoding(eEncoding_ASCII)
{
}

CTestWizardInfo::~CTestWizardInfo()
{
}

// Set
bool CTestWizardInfo::SetShowWelcome(bool showWelcome)
{
	m_showWelcome = showWelcome;
	return (m_showWelcome == showWelcome);
}

bool CTestWizardInfo::SetPath(LPCTSTR path)
{
	m_path = path;
	return (m_path == path);
}

bool CTestWizardInfo::SetRecurse(bool recurse)
{
	m_recurse = recurse;
	return (m_recurse == recurse);
}

bool CTestWizardInfo::SetFilter(LPCTSTR filter)
{
	m_filter = filter;
	return (m_filter == filter);
}

bool CTestWizardInfo::SetOutputType(TestWizardOutputType outputType)
{
	m_outputType = outputType;
	return (m_outputType == outputType);
}

bool CTestWizardInfo::SetOutputTypeByDisplayName(LPCTSTR typeDisplayName)
{
	return thisClass::GetOutputTypeForDisplayName(typeDisplayName, m_outputType);
}

bool CTestWizardInfo::SetOutputFileName(LPCTSTR outputFileName)
{
	m_outputFileName = outputFileName;
	return (m_outputFileName == outputFileName);
}

bool CTestWizardInfo::SetOutputFileEncoding(TestWizardOutputFileEncoding outputFileEncoding)
{
	m_outputFileEncoding = outputFileEncoding;
	return (m_outputFileEncoding == outputFileEncoding);
}

bool CTestWizardInfo::SetOutputFileEncodingByDisplayName(LPCTSTR encodingDisplayName)
{
	return thisClass::GetOutputFileEncodingForDisplayName(encodingDisplayName, m_outputFileEncoding);
}

// Get
bool CTestWizardInfo::GetShowWelcome(void) const
{
	return m_showWelcome;
}

CString CTestWizardInfo::GetPath(void) const
{
	return m_path;
}

bool CTestWizardInfo::GetRecurse(void) const
{
	return m_recurse;
}

CString CTestWizardInfo::GetFilter(void) const
{
	return m_filter;
}

TestWizardOutputType CTestWizardInfo::GetOutputType(void) const
{
	return m_outputType;
}

CString CTestWizardInfo::GetOutputTypeDisplayName(void) const
{
	return thisClass::GetOutputTypeDisplayName(m_outputType);
}

CString CTestWizardInfo::GetOutputFileName(void) const
{
	return m_outputFileName;
}

TestWizardOutputFileEncoding CTestWizardInfo::GetOutputFileEncoding(void) const
{
	return m_outputFileEncoding;
}

CString CTestWizardInfo::GetOutputFileEncodingDisplayName(void) const
{
	return thisClass::GetOutputFileEncodingDisplayName(m_outputFileEncoding);
}

// Static methods
bool CTestWizardInfo::IsValidOutputType(DWORD outputType)
{
	return ((outputType >= (DWORD)eOutput_First) && (outputType <= (DWORD)eOutput_Last));
}

bool CTestWizardInfo::IsValidOutputFileEncoding(DWORD outputFileEncoding)
{
	return ((outputFileEncoding >= (DWORD)eEncoding_First) && (outputFileEncoding <= (DWORD)eEncoding_Last));
}

CString CTestWizardInfo::GetOutputTypeDisplayName(TestWizardOutputType outputType)
{
	CString typeDisplayName;

	ATLASSERT(thisClass::IsValidOutputType((DWORD)outputType));
	if(thisClass::IsValidOutputType((DWORD)outputType))
	{
		typeDisplayName = s_testWizardOutputTypeDisplayName[outputType];
	}

	return typeDisplayName;
}

CString CTestWizardInfo::GetOutputFileEncodingDisplayName(TestWizardOutputFileEncoding outputFileEncoding)
{
	CString encodingDisplayName;

	ATLASSERT(thisClass::IsValidOutputFileEncoding((DWORD)outputFileEncoding));
	if(thisClass::IsValidOutputFileEncoding((DWORD)outputFileEncoding))
	{
		encodingDisplayName = s_testWizardOutputFileEncodingDisplayName[outputFileEncoding];
	}

	return encodingDisplayName;
}

bool CTestWizardInfo::GetOutputTypeForDisplayName(LPCTSTR typeDisplayName, TestWizardOutputType& outputType)
{
	bool success = false;

	ATLASSERT(typeDisplayName != NULL);
	if(typeDisplayName != NULL)
	{
		for(int i=(int)eOutput_First; i<=(int)eOutput_Last && !success; ++i)
		{
			if(::lstrcmpi(typeDisplayName, s_testWizardOutputTypeDisplayName[i]) == 0)
			{
				outputType = (TestWizardOutputType)i;
				success = true;
			}
		}
	}

	return success;
}

bool CTestWizardInfo::GetOutputFileEncodingForDisplayName(LPCTSTR encodingDisplayName, TestWizardOutputFileEncoding& outputFileEncoding)
{
	bool success = false;

	ATLASSERT(encodingDisplayName != NULL);
	if(encodingDisplayName != NULL)
	{
		for(int i=(int)eEncoding_First; i<=(int)eEncoding_Last && !success; ++i)
		{
			if(::lstrcmpi(encodingDisplayName, s_testWizardOutputFileEncodingDisplayName[i]) == 0)
			{
				outputFileEncoding = (TestWizardOutputFileEncoding)i;
				success = true;
			}
		}
	}

	return success;
}

// File List
int CTestWizardInfo::FindFiles(ITestWizardFindFileCB* callback) const
{
	ATLASSERT(callback != NULL);
	if(callback == NULL)
	{
		return 0;
	}

	int fileCount = 0;

	bool success = callback->OnBeginFindFiles();
	if(success)
	{
		fileCount = this->FindFiles(callback, m_path, m_filter, m_recurse);

		callback->OnEndFindFiles();
	}

	return fileCount;
}

int CTestWizardInfo::FindFiles(ITestWizardFindFileCB* callback, LPCTSTR directory, LPCTSTR filter, bool recurse) const
{
	int fileCount = 0;

	bool success = callback->OnBeginDirectorySearch(directory);
	if(success)
	{
		// First search current directory for files specified by the filter

		TCHAR directoryWithFilter[MAX_PATH] = {0};
		::PathCombine(directoryWithFilter, directory, filter);

		WIN32_FIND_DATA findFileData = {0};
		HANDLE hFindFile = ::FindFirstFile(directoryWithFilter, &findFileData);
		if(hFindFile != INVALID_HANDLE_VALUE)
		{
			do
			{
				if(FILE_ATTRIBUTE_DIRECTORY != (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
				{
					fileCount += 1;

					callback->OnFileFound(directory, &findFileData);
				}
			} while(TRUE == ::FindNextFile(hFindFile, &findFileData));

			::FindClose(hFindFile);
			hFindFile = NULL;
		}

		// Then recurse sub-directories if appropriate
		if(recurse)
		{
			::PathCombine(directoryWithFilter, directory, _T("*"));

			HANDLE hFindDirectory = NULL;
			WIN32_FIND_DATA findDirectoryData = {0};
			hFindDirectory = ::FindFirstFileEx(directoryWithFilter, FindExInfoStandard, &findDirectoryData, FindExSearchLimitToDirectories, NULL, 0);
			if(hFindDirectory != INVALID_HANDLE_VALUE)
			{
				TCHAR subDirectory[MAX_PATH] = {0};

				do
				{
					if(	FILE_ATTRIBUTE_DIRECTORY == (findDirectoryData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
						::lstrcmp(_T("."), findDirectoryData.cFileName) != 0 &&
						::lstrcmp(_T(".."), findDirectoryData.cFileName) != 0)
					{
						::PathCombine(subDirectory, directory, findDirectoryData.cFileName);

						fileCount += this->FindFiles(callback, subDirectory, filter, recurse);
					}
				} while(TRUE == ::FindNextFile(hFindDirectory, &findDirectoryData));

				::FindClose(hFindDirectory);
				hFindDirectory = NULL;
			}
		}

		callback->OnEndDirectorySearch(directory);
	}

	return fileCount;
}

int CTestWizardInfo::FindPreviousPage(int /*pageDialogId*/) const
{
	// 0  = goto previous page
	// -1 = prevent page change
	// >0 = jump to page by dlg ID
	int page = 0;

	//switch(pageDialogId)
	//{
	//case IDD_WIZ97_WELCOME:
	//	break;
	//case IDD_WIZ97_PATHFILTER:
	//	break;
	//case IDD_WIZ97_FILEPREVIEW:
	//	break;
	//case IDD_WIZ97_OUTPUT:
	//	break;
	//case IDD_WIZ97_COMPLETION:
	//	break;
	//}

	return page;
}

int CTestWizardInfo::FindNextPage(int /*pageDialogId*/) const
{
	// 0  = goto next page
	// -1 = prevent page change
	// >0 = jump to page by dlg ID
	int page = 0;

	//switch(pageDialogId)
	//{
	//case IDD_WIZ97_WELCOME:
	//	break;
	//case IDD_WIZ97_PATHFILTER:
	//	break;
	//case IDD_WIZ97_FILEPREVIEW:
	//	break;
	//case IDD_WIZ97_OUTPUT:
	//	break;
	//case IDD_WIZ97_COMPLETION:
	//	break;
	//}

	return page;
}

void CTestWizardInfo::ShowHelp(int pageDialogId, int /*controlId*/)
{
	LPCTSTR topicPath = NULL;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -