亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chmfile.cpp

?? evc 簡單的錄音程序,可以檢測聲音驅動
?? CPP
字號:
// CHMFile.cpp: implementation of the CCHMFile class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CHMFile.h"
#include "AtlConv.h"
#include ".\chmfile.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCHMFile::CCHMFile()
{	
	m_pCHMFile=NULL;
}

CCHMFile::~CCHMFile()
{
	ResetFileList();
	ResetTocList();
	if (m_pCHMFile)
		chm_close(m_pCHMFile);
	m_pCHMFile=NULL;
}

BOOL CCHMFile::ResetFileList()
{
	// Free Memory
	POSITION pos=m_FileList.GetHeadPosition();
	while(pos!=NULL)
	{
		CCHMFileInfo *pInfo=(CCHMFileInfo*)m_FileList.GetNext(pos);		
		delete pInfo;
	}
	m_FileList.RemoveAll();
	return true;
}

BOOL CCHMFile::ResetTocList()
{
	// Free Memory
	POSITION pos=m_TOC.GetHeadPosition();
	while(pos!=NULL)
	{
		CCHMToc *pInfo=(CCHMToc *)m_TOC.GetNext(pos);		
		delete pInfo;
	}
	m_TOC.RemoveAll();
	return true;
}

BOOL CCHMFile::Open(CString FileName)
{
	m_FileName=FileName;

	if (m_pCHMFile!=NULL)
		chm_close(m_pCHMFile);

	m_pCHMFile=NULL;
	ResetFileList();
	ResetTocList();

	USES_CONVERSION;
	m_pCHMFile=chm_open(T2A((LPTSTR)(LPCTSTR)FileName));
	if (m_pCHMFile==NULL)
		return false;

	m_Split.ResetData();
	m_Split.SplitPath(FileName);

	if (!ReadListOfFiles())
		return false;

	return true;
}

void CCHMFile::Close()
{
	if (m_pCHMFile)
	{
		chm_close(m_pCHMFile);
		m_pCHMFile=NULL;
	}
	ResetFileList();
	ResetTocList();
	DeleteFiles(_T("/Temp/"));
}

BOOL CCHMFile::Load(CString FileName)
{
	if (!Open(FileName))
		return false;		

	CCHMFileInfo* pHHCFile=GetHHCFile();
	if (pHHCFile!=NULL)
	{
		CString HHCText=GetTextFile(pHHCFile);
		
		CString Title;
		CString File;
		int Level=0;

		TRACE(_T("Processing HCC file : %s\n"),FileName);

		// Parse HHCText file to build TOC
		// <UL> = Go in Level		
		// </UL> = Go out level
		// <param name="Name" value="Cover"> = Title
		// <param name="Local" value="webappshtml/00co01a.htm">	= File to navigate to				

		CString Text;
		BOOL bNeedToAdd=false;
		for(int i=0;i<HHCText.GetLength();i++)
		{			
			if (HHCText.GetAt(i)==_T('<'))
			{
				if (HHCText.Mid(i,4).CompareNoCase(_T("<UL>"))==0)
				{
					if (bNeedToAdd)
					{
						m_TOC.AddTail(new CCHMToc(Title,"",Level));
						bNeedToAdd=false;
					}
					Level++;
				}
				if (HHCText.Mid(i,5).CompareNoCase(_T("</UL>"))==0)
				{
					Level--;
					if (bNeedToAdd)
					{
						m_TOC.AddTail(new CCHMToc(Title,"",Level));
						bNeedToAdd=false;
					}
				}
				if (HHCText.Mid(i,26).CompareNoCase(_T("<param name=\"Name\" value=\""))==0)
				{
					int idx=HHCText.Find(_T("\">"),i+26);
					Title=HHCText.Mid(i+26,idx-i-26);
					bNeedToAdd=true;
				}
				if (HHCText.Mid(i,27).CompareNoCase(_T("<param name=\"Local\" value=\""))==0)
				{
					int idx=HHCText.Find(_T("\">"),i+27);
					File=HHCText.Mid(i+27,idx-i-27);
					File=_T("/")+File;
					m_TOC.AddTail(new CCHMToc(Title,File,Level));
					bNeedToAdd=false;
				}
			}
		}		
	}
	else
		TRACE(_T("NO HCC Contents file found\n"));

	// All Done
	return true;
}

BOOL CCHMFile::GetFile(CString FileName, CString FilePath)
{
	CCHMFileInfo *pInfo=CheckFileExists(FileName);
	return GetFile(pInfo,FilePath);
}

// Get File from CHM & Store onto Disk using FilePath
BOOL CCHMFile::GetFile(CCHMFileInfo *pInfo, CString FilePath)
{	
	if (pInfo==NULL)
		return false;

	BYTE* pBuffer=GetFile(pInfo);
	if (pBuffer==NULL)
		return false;
	
	// Create File
	TRACE(_T("Get File : Saving file to %s as %s\n"),pInfo->m_FileName,FilePath);
	CFile F;
	if (F.Open(FilePath,CFile::modeWrite|CFile::modeCreate))
	{
		F.Write(pBuffer,pInfo->m_Length);
		F.Close();		
	}
	else
	{
		TRACE(_T("Failed to create file : %s as %s\n"),pInfo->m_FileName,FilePath);
	}

	return true;
}

CString CCHMFile::GetTextFile(CCHMFileInfo *pInfo)
{
	if (pInfo==NULL)
		return CString("");
	
	BYTE *pBuffer=GetFile(pInfo);
	if (pBuffer==NULL)
		return CString("");	
	
	CString FileText;

	CStringEx Text;
	for(unsigned long i=0;i<pInfo->m_Length;i++)
	{
		Text+=(TCHAR)pBuffer[i];
	}
	int idx=Text.FindNoCase(_T("UTF-8"));
	if ((idx>-1) && (idx<200))
	{
		DWORD dwSize=(pInfo->m_Length*sizeof(TCHAR))+100;
		BYTE *pBuffer2=new BYTE[dwSize];
		ZeroMemory(pBuffer2,dwSize);
		int nRes=MultiByteToWideChar(CP_UTF8,0,(LPCSTR)pBuffer,pInfo->m_Length,(LPWSTR)pBuffer2,dwSize);

		FileText.Format(_T("%s"),(LPWSTR)pBuffer2);

		delete pBuffer2;
		pBuffer2=NULL;
	}
	else
	{
		FileText=Text;
	}

	delete pBuffer;
	pBuffer=NULL;
	
	return CString(FileText);
}

BYTE* CCHMFile::GetFile(CCHMFileInfo *pInfo)
{	
	if (m_pCHMFile==NULL)
	{
		TRACE(_T("Get File : Failed - pCHMFile =NULL\n"));
		return NULL;
	}	
	if (pInfo==NULL)
	{
		TRACE(_T("Get File : File not found in List of files\n"));
		return NULL;
	}

	TRACE(_T("Get File : %s\n"),pInfo->m_FileName);
	struct chmUnitInfo ui;
	USES_CONVERSION;
	int rc=chm_resolve_object(m_pCHMFile, T2A((LPTSTR)(LPCTSTR)pInfo->m_FileName), &ui);	
	if (rc==1)
	{
		TRACE(_T("Get File : Failed to resolve file\n"));
		return NULL;
	}
	
	BYTE *pBuffer=new BYTE[pInfo->m_Length+10];
	LONGINT64 rc2=chm_retrieve_object(m_pCHMFile, &ui, pBuffer, 0, pInfo->m_Length);	

	return pBuffer;
}

int CCHMFile::EnumListOfFiles(struct chmFile *h,struct chmUnitInfo *ui,void *context)
{
	CCHMFile *pCHMFIle=(CCHMFile*)context;	
	pCHMFIle->AddFileInfo(ui->path,(DWORD)ui->length, (DWORD)ui->space, (DWORD)ui->start);
    return CHM_ENUMERATOR_CONTINUE;
}

BOOL CCHMFile::AddFileInfo(CString FileName, DWORD Length, DWORD Space, DWORD Start)
{
	CCHMFileInfo *pFileInfo=new CCHMFileInfo(FileName, Length, Space,Start);
	m_FileList.AddTail(pFileInfo);
	return true;
}

// Read CHM File List
BOOL CCHMFile::ReadListOfFiles(void)
{
	if (m_pCHMFile==NULL)
		return false;

	ResetFileList();

	// Read TOC	
	int rc=chm_enumerate(m_pCHMFile, CHM_ENUMERATE_ALL, CCHMFile::EnumListOfFiles, (void *)this);

	// All Done
	return true;
}

CCHMFileInfo* CCHMFile::CheckFileExists(CString FileName)
{
	if (FileName.Left(3).Compare(_T("/.."))==0)
		FileName=FileName.Mid(3);

	if (FileName.Left(7).CompareNoCase(_T("MS-ITS:"))==0)
	{		
		FileName=FileName.Mid(7);
		int idx=FileName.Find(_T("::"));
		CString CHMFileName=FileName.Left(idx);
		FileName=FileName.Mid(idx+2);

		if (CHMFileName.CompareNoCase(m_Split.GetFilename()+m_Split.GetExtension())!=0)
			return NULL;
	}
	if (FileName.Left(8).CompareNoCase(_T("/MS-ITS:"))==0)
	{		
		FileName=FileName.Mid(8);
		int idx=FileName.Find(_T("::"));
		CString CHMFileName=FileName.Left(idx);
		FileName=FileName.Mid(idx+2);
		if (CHMFileName.CompareNoCase(m_Split.GetFilename()+m_Split.GetExtension())!=0)
			return NULL;
	}

	// Ensure all filenames start with '/'
	if (FileName.Left(1).Compare(_T("/"))!=0)
		FileName=_T("/")+FileName;

	int idx=FileName.ReverseFind(_T('/'));	
	CString FileName2=FileName.Mid(idx+1);
	CString FileNameHTML;
	FileNameHTML.Format(_T("/html%s"),FileName);
	POSITION pos=m_FileList.GetHeadPosition();
	while(pos!=NULL)
	{
		CCHMFileInfo *pInfo=(CCHMFileInfo*)m_FileList.GetNext(pos);		
		if (pInfo)
		{
			if (pInfo->m_FileName.CompareNoCase(FileName)==0)
			{
				return pInfo;
			}
			if (pInfo->m_FileName.CompareNoCase(FileNameHTML)==0)
			{
				return pInfo;
			}
		}
	}	
	
	return NULL;
}


CCHMFileInfo* CCHMFile::GetHHCFile()
{
	POSITION pos=m_FileList.GetHeadPosition();
	while(pos!=NULL)
	{
		CCHMFileInfo *pInfo=(CCHMFileInfo*)m_FileList.GetNext(pos);		
		if (pInfo)
		{
			if (pInfo->m_FileName.Right(4).CompareNoCase(_T(".hhc"))==0)
			{
				return pInfo;
			}
		}
	}	
	return NULL;
}

int CCHMFile::CheckStringArray(CStringArray *pStrings, CString Item, BOOL bNoCase)
{
	if (pStrings==NULL)
		return -1;

	for(int i=0;i<pStrings->GetSize();i++)
	{
		if (bNoCase)
		{
			if (pStrings->GetAt(i).CompareNoCase(Item)==0)
				return i;
		}
		else
		{
			if (pStrings->GetAt(i).Compare(Item)==0)
				return i;
		}
	}
	return -1;
}


BOOL CCHMFile::DeleteFiles(CString Dir)
{	
	for(int i=0;i<m_ImageList.GetSize();i++)
	{
		CString FileName=m_ImageList.GetAt(i);

		int idx=FileName.ReverseFind(_T('/'));
		CString FilePath;
		FilePath.Format(_T("%s\\%s"),Dir,FileName.Mid(idx+1));
		DeleteFile(FilePath);
	}
	m_ImageList.RemoveAll();
	return true;
}

CString CCHMFile::GetHTMLFile(CString FileName, CString Dir)
{		
	CCHMFileInfo *pInfo=CheckFileExists(FileName);
	if (pInfo==NULL)
		return CString("");

	CStringEx HTMLText=GetTextFile(pInfo);
	if (HTMLText.IsEmpty())
		return CString ("");

	// Get Root Directory.

	// Store for later.

	TRACE(_T("Processing HTML Text file : %s\n"),FileName);
	m_ImageList.RemoveAll();		
	int iStartPos=0;
	int iLinkPos=-1;
	do
	{
		iLinkPos=HTMLText.FindNoCase(_T("<link"),iStartPos);
		if (iLinkPos!=-1)
		{
			int idx=HTMLText.FindNoCase(_T("href="),iLinkPos+5);
			if (idx>-1)
			{
				int idx2=HTMLText.Mid(idx+6).FindOneOf(_T("'\""));
				if (idx2>-1)
				{										
					CStringEx HRef=HTMLText.Mid(idx+6,idx2);					
					TRACE(_T("Found HRef : %s\n"),HRef);

					if (CheckStringArray(&m_ImageList,HRef, true)==-1)	
						m_ImageList.Add(HRef);

					CString Insert;
					if (HRef.FindNoCase(_T("MS-ITS:"))==0)
					{
						int idx3=HRef.Find(_T("::"));
						CString NewName=HRef.Mid(7,idx3-7);
						CString Insert;
						Insert.Format(_T("file://%s/%s"),Dir,HRef.Mid(idx3+3));
						HTMLText=HTMLText.Left(idx+6)+Insert+HTMLText.Mid(idx+idx2);
						iStartPos=idx+6+Insert.GetLength();
					}
					else
					{
						if (HRef.GetAt(0)!=_T('/'))
						{
							CSplitPath Split(pInfo->m_FileName,_T('/'));
							HRef=Split.GetPath()+HRef;
						}					
						Insert.Format(_T("file://%s"),Dir);
						HTMLText.Insert(idx+6,Insert);				
						CString Text=HTMLText.Mid(idx);
						iStartPos=idx+Insert.GetLength()+2;
					}				
				}
			}			
			continue;
		}

		// Remove Script entries
		iLinkPos=HTMLText.FindNoCase(_T("<script"),iStartPos);
		if (iLinkPos!=-1)
		{
			int idx=HTMLText.FindNoCase(_T("</script>"),iLinkPos);
			HTMLText=HTMLText.Left(iLinkPos)+HTMLText.Mid(idx+9);
			continue;
		}

		// Remove XML Entries.
		iLinkPos=HTMLText.FindNoCase(_T("<xml"),iStartPos);
		if (iLinkPos!=-1)
		{
			int idx=HTMLText.FindNoCase(_T("</xml>"),iLinkPos);
			HTMLText=HTMLText.Left(iLinkPos)+HTMLText.Mid(idx+6);
			continue;
		}

	}
	while (iLinkPos!=-1);
	
	// Extract StyleSheet Files
	for(int i=0;i<m_ImageList.GetSize();i++)
	{		
		CStringEx FN=m_ImageList.GetAt(i);
		CCHMFileInfo *pInfo=CheckFileExists(FN);

		CCHMFile ExternalCHM;											
		CCHMFile *pCHMFile=this;	
		if (pInfo==NULL)
		{
			CSplitPath Split(FileName,_T('/'));
			CString NameEx;						
			NameEx=Split.GetPath()+FN;						
			pInfo=CheckFileExists(NameEx);
		}
		if ((pInfo==NULL) && (FN.FindNoCase(_T("MS-ITS:"))==0))
		{
			CString ExternalCHMName;				
			int idx=FN.Find(_T("::"));
			ExternalCHMName=FN.Mid(7,idx-7);

			CStringEx Text;			
			int idx2=FN.ReverseFind(_T('/'));
			Text=FN.Right(FN.GetLength()-idx2-1);

			// Get file from external source.						
			if (ExternalCHM.Open(GetSplit().GetPath()+ExternalCHMName))
			{	
				pInfo=ExternalCHM.CheckFileExists(Text);
				pCHMFile=&ExternalCHM;
			}		
		}

		if (pInfo)
		{			
			CStringEx Text;			
			int idx=pInfo->m_FileName.ReverseFind(_T('/'));
			Text=pInfo->m_FileName.Right(pInfo->m_FileName.GetLength()-idx-1);

			CString FilePath;
			FilePath.Format(_T("%s%s"),Dir,Text);
			pCHMFile->GetFile(pInfo,FilePath);			
		}
	}

	WORD w=0;
	w=(WORD)HTMLText.GetAt(0);
	if (w==0xfeff)
		HTMLText=HTMLText.Mid(1);

	return CString(HTMLText);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区精品久久911| 国产精品一区一区三区| 亚洲国产精品成人综合| 精品少妇一区二区三区在线播放| 欧美色视频在线| 色呦呦国产精品| 在线免费观看日本欧美| 成人免费高清在线| 成人免费视频播放| 不卡一区二区在线| av在线不卡观看免费观看| 成人免费观看视频| 91在线观看美女| 91美女片黄在线| 欧美怡红院视频| 欧美三级在线播放| 欧美伦理电影网| 欧美一区国产二区| 亚洲精品一区二区精华| 久久久影院官网| 中文字幕一区二区三区不卡在线| 亚洲欧美一区二区在线观看| 日韩一区在线播放| 亚洲图片欧美综合| 日韩av一区二| 国产九色sp调教91| 成人国产精品视频| 欧美亚洲综合久久| 日韩欧美国产系列| 国产欧美日韩另类视频免费观看| 日本一区二区不卡视频| 一二三区精品视频| 热久久免费视频| 成人av午夜影院| 欧美男男青年gay1069videost| 日韩一区二区视频| 亚洲欧洲精品天堂一级| 午夜影院在线观看欧美| 国产精品一区二区在线观看不卡| 99综合电影在线视频| 欧美美女bb生活片| 国产精品网站在线观看| 婷婷开心久久网| 不卡的av网站| 日韩欧美一级二级| 成人欧美一区二区三区在线播放| 污片在线观看一区二区| 国产剧情一区在线| 欧美天堂亚洲电影院在线播放| www激情久久| 亚洲一区二区av在线| 老司机一区二区| 色综合久久天天综合网| 精品久久国产97色综合| 亚洲综合一区二区三区| 六月丁香婷婷久久| 色美美综合视频| 中文无字幕一区二区三区| 免费一级片91| 欧洲av在线精品| 国产精品福利一区二区| 激情小说亚洲一区| 欧美日韩在线一区二区| 中文字幕成人网| 狠狠色伊人亚洲综合成人| 91国产视频在线观看| 欧美经典一区二区三区| 日韩精品一级中文字幕精品视频免费观看| 高清不卡在线观看| 精品国产乱码久久久久久久| 天堂午夜影视日韩欧美一区二区| av成人免费在线观看| 国产亚洲综合av| 久久国产麻豆精品| 欧美一级高清大全免费观看| 天堂一区二区在线免费观看| 欧美色网站导航| 玉足女爽爽91| 日本韩国精品在线| 国产精品毛片a∨一区二区三区| 另类综合日韩欧美亚洲| 亚洲欧洲成人自拍| 成人avav在线| 亚洲欧洲日产国产综合网| 国产91清纯白嫩初高中在线观看| 欧美tickling挠脚心丨vk| 免费欧美日韩国产三级电影| 欧美老肥妇做.爰bbww| 视频一区视频二区中文字幕| 欧美日韩国产片| 日本aⅴ免费视频一区二区三区| 制服丝袜av成人在线看| 免费高清在线视频一区·| 欧美成人a∨高清免费观看| 卡一卡二国产精品| 欧美国产精品v| 91免费观看视频| 亚洲福利国产精品| 51精品视频一区二区三区| 免费精品视频在线| 国产日韩v精品一区二区| 99久久免费国产| 亚洲国产视频a| 日韩欧美国产一区二区三区 | 欧美午夜理伦三级在线观看| 亚洲电影第三页| 日韩精品一区二区三区视频在线观看| 极品美女销魂一区二区三区| 国产精品国产三级国产普通话蜜臀 | 国产片一区二区| 在线视频你懂得一区二区三区| 日韩综合在线视频| 久久一区二区三区四区| 91美女片黄在线| 免费的成人av| 亚洲女人的天堂| 日韩三区在线观看| 91亚洲资源网| 波多野结衣亚洲| 日本中文字幕不卡| 亚洲男人天堂av网| 日韩精品一区二区三区在线| 成人激情小说网站| 人人精品人人爱| 18涩涩午夜精品.www| 日韩女优制服丝袜电影| 色婷婷av一区二区三区之一色屋| 美女诱惑一区二区| 一二三四区精品视频| 国产三级欧美三级| 欧美一区二区三区人| www.欧美亚洲| 激情综合色播五月| 丝袜脚交一区二区| 一区二区久久久久久| 国产精品乱人伦中文| www日韩大片| 日韩亚洲欧美中文三级| 在线观看一区二区视频| 成人精品视频网站| 国产剧情一区二区| 精品伊人久久久久7777人| 午夜日韩在线观看| 一区二区三区产品免费精品久久75| 久久亚洲精品小早川怜子| 欧美一级免费观看| 精品视频在线免费观看| 在线视频一区二区三区| 色综合久久中文综合久久97| 91亚洲国产成人精品一区二三| 国产成人在线电影| 国产精品一区在线观看乱码| 久久www免费人成看片高清| 婷婷成人综合网| 青青草国产精品97视觉盛宴| 亚洲制服欧美中文字幕中文字幕| 国产精品久久久久久久久晋中 | 石原莉奈一区二区三区在线观看| 亚洲欧美日韩电影| 自拍偷拍国产精品| 亚洲精品日韩综合观看成人91| 亚洲欧美另类小说视频| 亚洲欧美成aⅴ人在线观看| 一区二区三区加勒比av| 午夜欧美电影在线观看| 日韩精品久久理论片| 美女性感视频久久| 国产乱码精品1区2区3区| 国产69精品久久777的优势| 不卡一区在线观看| 欧美天堂亚洲电影院在线播放| 欧美日韩激情一区二区三区| 91精品国产综合久久精品app| 91精品国产aⅴ一区二区| 日韩欧美在线影院| 久久久www免费人成精品| 中文字幕一区二区三区视频| 婷婷久久综合九色综合伊人色| 久久精品国产亚洲高清剧情介绍| 韩国精品久久久| 91麻豆成人久久精品二区三区| 欧美日韩国产在线播放网站| 欧美v国产在线一区二区三区| 国产色综合久久| 亚洲一区二区三区国产| 精品亚洲porn| 一本到高清视频免费精品| 欧美一区二区女人| 国产精品美女久久久久久久网站| 一区二区三区四区中文字幕| 麻豆精品视频在线| 91网上在线视频| 欧美tickling挠脚心丨vk| 亚洲日本成人在线观看| 麻豆精品在线观看| 99r精品视频| 久久综合久久综合久久| 亚洲综合色在线| 国产久卡久卡久卡久卡视频精品| 欧美色大人视频|