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

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

?? countingdlg.cpp

?? visual c++ 實例編程
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
		}
		if(listPaths.IsEmpty())
			break;

		strFolder = listPaths.RemoveHead();
		strPath = strFolder + "\\*.*";
		finder.Close();
	}while(pThis->m_CountingStatus==COUNTING);

	if(pThis->m_nTimer!=NULL)
	{
		pThis->KillTimer(pThis->m_nTimer);
		pThis->m_nTimer = NULL;
	}

	CString str1;
	if(pThis->m_CountingStatus==STOP)
		str1.LoadString(IDS_ABORT); //用戶強行終止
	else
		str1.LoadString(IDS_COUNTINGSTOP);
	pThis->GetDlgItem(IDC_PATH_COUNTING)->SetWindowText(str1);

	pThis->m_CountingStatus = STOP;

	pThis->m_btnCount.SetIcon(IDI_COUNT);
	CString str;
	str.LoadString(IDS_COUNT);
	pThis->m_btnCount.SetWindowText(str);

	HICON hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_BIG_ICON1),
		IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);//SM_CXICON 
	pThis->m_ctrlCountingIcon.SendMessage(STM_SETICON, (WPARAM)hIcon, 0);

	return 0;
}

////////////////////////////////////////////////////////////
//modify a path with file name to without file name
// such as: 
//   modify:  d:\\temp\\countingdlg.cpp
//        to:   d:\\temp
//
////////////////////////////////////////////////////////////
CString CCountingDlg::GetPurePath(CString strPath)
{
	int nLast = strPath.ReverseFind('\\');
	return strPath.Left(nLast);
}

/******************************************************************
*  往一字符串strText中追加空格,使其長度達到num
*  bAtEnd : TRUE表示在字符串后面追加空格
*			  FALSE表示在字符串前面追加空格
*    若strText的長度本來就大于num,則將最后三個字符改為...
*******************************************************************/
CString CCountingDlg::TextAppendSpace(CString strText, int num, BOOL bAtEnd)
{
	CString str;
	if(strText.GetLength()>=num)
	{
		str = strText.Left(num-3);
		str += "...";
	}
	else
	{
		str = strText;
		for(int i=strText.GetLength(); i<num; i++)
		{
			if(bAtEnd)
				str +=" ";
			else
				str = " "+str;
		}
	}

	return str;
}
/*****************************************************************
	strFileName是否為我們要統計的文件類型
*****************************************************************/
BOOL CCountingDlg::IsSearchingFor(CString strFileName)
{
	CString strExts = m_strComboExt;
	strExts.MakeLower();
	strFileName.MakeLower();

	CString strOneOfExts; // get one extension in strExts
	while(ExtractExtension(strOneOfExts, strExts))
	{
		if(CompareMarkString(strOneOfExts, strFileName))
			return TRUE;
	}

	return FALSE;
}

/*****************************************************************
	比較strFile是否為inputFile的文件類型
*****************************************************************/
BOOL CCountingDlg::CompareMarkString(CString inputFile, CString strFile)
{
	strFile = strFile.Right(strFile.GetLength()-strFile.ReverseFind('\\')-1);
	int nLength1 = strFile.GetLength(); 
	int nLength2 = inputFile.GetLength();

	for(int i=0, j=0; i<nLength1&&j<nLength2; i++, j++)
	{
		if(inputFile[j]=='*')
		{
			j++;
			if(j==nLength2)
				return TRUE;
			while(j<nLength2&&inputFile[j]=='?')
			{
				i++;
				j++;
			}
			if(j>=nLength2)
				return TRUE;

			while(i<nLength1&&inputFile[j]!=strFile[i])
				i++;
			if(i>=nLength1)
				return FALSE;

			continue;
		}
		if(inputFile[j]=='?')
		{
			continue;
		}
		if(inputFile[j]==strFile[i])
		{
			continue;
		}
		else
			return FALSE;
	}

	if(i==nLength1&&j==nLength2)
		return TRUE;
	else
		return FALSE;
}

/*****************************************************************
	統計開始后動態顯示圖標,表示統計進行中
*****************************************************************/

void CCountingDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(nIDEvent != (UINT)m_nTimer)
		return;

	static int icons[] =
	{ IDI_BIG_ICON1, IDI_BIG_ICON2, IDI_BIG_ICON3, IDI_BIG_ICON4, IDI_BIG_ICON5, IDI_BIG_ICON6, 
	IDI_BIG_ICON7};
	
	static long index = 0;

	HICON hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(icons[index++%7]),
		IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);//SM_CXICON 
	m_ctrlCountingIcon.SendMessage(STM_SETICON, (WPARAM)hIcon, 0);
}


/*****************************************************************
	確定是否退出
*****************************************************************/
void CCountingDlg::OnQuit() 
{
	// TODO: Add your control notification handler code here
	CString str1, str2;
	str1.LoadString(IDS_TOQUIT);
	str2.LoadString(IDS_MESSAGE);
	if(MessageBox(str1, str2, MB_YESNO)==IDNO)
	{
		return ;
	}
	CDialog::OnCancel();
}

/*********************************************************
	統計c++文件
*********************************************************/
int CCountingDlg::GetCppFileLines(LPCTSTR strFileName, int* pnLength, int* pnCommentLines, int* pnBlankLines)
{
	//there are two methods to count lines in files, by CStdioFile or CFile
	*pnLength = 0;
	*pnCommentLines = 0;
	*pnBlankLines = 0;

	CStdioFile file;
	if(file.Open(strFileName, CFile::modeRead)==FALSE)
		return 0;

	int nLines = 0;
	int nCommentLines = 0;
	int nBlankLines = 0;

	BOOL bCommentSet = FALSE; //注釋行統計標識 有"/*"時TRUE, "*/"時FALSE

	int nLength = file.GetLength();
	*pnLength = nLength;

	CString bufRead;

	int nLineCommentBegin = 0;
	while(file.ReadString(bufRead)!=FALSE)
	{
		nLines++;

		bufRead.TrimLeft(); //先將文件頭的空格或制表符去掉

		if(bufRead.GetLength()==0) //為空白行
		{
			nBlankLines++;
			continue;
		}

		if(bufRead.Find("//")==0 && !bCommentSet)
		{
			nCommentLines++;
			continue;
		}

		int nStartComment = bufRead.Find("/*");
		if(nStartComment == 0  && !bCommentSet ) // "/*" is the first two chars
		{
			bCommentSet = TRUE;
//			nLineCommentBegin = nLines;
		}
		else if(nStartComment != -1 &&!bCommentSet) // "/*" is not the first two chars though found. so it's a code line
		{
			bCommentSet = TRUE;
			nLineCommentBegin = nLines;
			nCommentLines --;
			if(bufRead.Find("\"")!=-1) //防止/*在兩個"之間,如 "...../*.....",這種/*不是注釋符
			{
				CString strTemp = bufRead.Left(nStartComment);
				int nCountQuota=0;
				int i=1;
				if(strTemp[0]=='\"')nCountQuota++;
				while((strTemp[i]=='\"'&&strTemp[i-1]!='\\')&&i<strTemp.GetLength() )
				{
					nCountQuota++;
					i++;
				}
				if((nCountQuota/2)*2 != nCountQuota)//nCountQuota為奇數,還原bCoommentSet
				{
					bCommentSet = FALSE;
					nCommentLines ++;
				}
			}
		}

		bufRead.TrimRight();

		int nEndComment = bufRead.Find("*/");
		if(bufRead.GetLength()>=2 && (nEndComment == (bufRead.GetLength()-2)) && bCommentSet)
		{
			bCommentSet = FALSE;
			nCommentLines ++;  
		}
		else if(nEndComment != -1 && bCommentSet)
		{
			bCommentSet = FALSE;
			if(nLineCommentBegin == nLines) // /* */ on the same line
				nCommentLines++;
			bufRead = bufRead.Right(bufRead.GetLength()-nEndComment-2);
			if(bufRead.Find("//")!=-1) //it is very strange!  such as  "code */ (code or blank) // code"
			{
				bufRead.TrimLeft();
				if(bufRead.Find("//")==0)
					nCommentLines++;
			}
			else if(nLineCommentBegin != nLines && bufRead.GetLength()==0)
				nCommentLines++;
		}

		if(bCommentSet)
			nCommentLines++;
	}

	*pnCommentLines = nCommentLines;
	*pnBlankLines = nBlankLines;

	file.Close();

	return nLines;

	//the following is not so good. sometimes it may obtain a wrong result

/*	CFile file;

	file.Open(strFileName, CFile::modeRead);

	int nLines = 0;
	int nCodeLines = 0;
	int nCommentLines = 0;
	int nBlankLines = 0;

	BOOL bLastSplash = FALSE;
	BOOL bDoubleSplash = FALSE;
	BOOL bLastStar = FALSE;
	BOOL bCommentCount = FALSE;
	BOOL bBlankCount = TRUE;

	int nLength = file.GetLength();
	m_nSize += nLength;
	*pnLength = nLength;

	char buf[255];
	int nRead = 0;
	while(nLength>0)
	{
		nRead = file.Read(buf, 250);
		
		if(buf[0] == '*' && bLastSplash)
		{
			bLastSplash = FALSE;
			bCommentCount = TRUE;
		}

		if(buf[0] == '/' && bLastSplash && !bCommentCount && bBlankCount && !bDoubleSplash)
		{
			bLastSplash = FALSE;
			bDoubleSplash = TRUE;
		}

		if(buf[0] == '/' && bLastStar)
		{
			bLastStar = FALSE;
			bCommentCount = FALSE;
			nCommentLines++;
		}

		for(int i=0; i<nRead; i++)
		{
			if(buf[i] == '/')
			{
				if(i<nRead-1 && buf[i+1]=='*' && !bDoubleSplash )
					bCommentCount = TRUE;
				if(i<nRead-1 && buf[i+1]=='/' && !bCommentCount && bBlankCount  && !bDoubleSplash)
					bDoubleSplash = TRUE;
				if(i==nRead-1)
					bLastSplash=TRUE;
			}


			if(buf[i] == '*')
			{
				if(i<nRead-1 && buf[i+1]=='/')
				{
					bCommentCount = FALSE;
					nCommentLines++;
				}
				if(i==nRead-1)
					bLastStar=TRUE;
			}
			
			if( buf[i]!=' ' && buf[i]!='\t' && buf[i]!='\r' && buf[i]!='\n')//&& bBlankCount)
				bBlankCount = FALSE;

			if(buf[i]=='\n')
			{
				nLines++;
				if(bBlankCount)nBlankLines++;
				if(bBlankCount && bCommentCount)nCommentLines--;
				if(bDoubleSplash)
				{
					nCommentLines++;
					bDoubleSplash = FALSE;
				}

				bBlankCount = TRUE;
				
				if(bCommentCount) nCommentLines++;
			}
		}
		nLength -= nRead;
	}

	if(buf[nRead-1]!='\n')
		nLines++;
	if(bDoubleSplash)
		nCommentLines++;

	*pnCommentLines = nCommentLines;
	*pnBlankLines = nBlankLines;

	file.Close();

	return nLines;
*/
}

/*****************************************************************
	統計SQL文件的行數

*****************************************************************/

int CCountingDlg::GetSqlFileLines(LPCTSTR strFileName, int *pnLength, int *pnCommentLines, int *pnBlankLines)
{
	*pnLength = 0;
	*pnCommentLines = 0;
	*pnBlankLines = 0;

	CStdioFile file;
	if(file.Open(strFileName, CFile::modeRead)==FALSE)
		return 0;

	int nLines = 0;
	int nCommentLines = 0;
	int nBlankLines = 0;

	BOOL bCommentSet = FALSE;

	int nLength = file.GetLength();
	m_nSize += nLength;
	*pnLength = nLength;

	CString bufRead;

	while(file.ReadString(bufRead)!=FALSE)
	{
		nLines++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色先锋资源久久综合| 热久久免费视频| 91小视频免费看| 国产精品久久久久影院老司| 懂色av一区二区在线播放| 中文字幕不卡在线播放| 99视频在线观看一区三区| 亚洲精品视频自拍| 欧美体内she精高潮| 亚洲国产精品麻豆| 久久亚洲综合色一区二区三区 | 国产黑丝在线一区二区三区| 久久人人爽人人爽| 波多野结衣一区二区三区| 一区二区三区在线免费视频| 欧美高清精品3d| 国产成人在线视频网站| 亚洲专区一二三| www国产精品av| 色综合欧美在线视频区| 理论片日本一区| 国产精品嫩草影院com| 欧美午夜电影一区| 国产在线看一区| 亚洲精品国产无套在线观| 欧美一区二区三区影视| 成人黄色小视频| 奇米一区二区三区| 国产精品久久久久四虎| 在线播放91灌醉迷j高跟美女| 国产一区二区三区高清播放| 一区二区三区.www| 久久精品夜色噜噜亚洲a∨| 欧美性生活久久| 国产成a人无v码亚洲福利| 亚洲高清在线精品| 国产欧美日韩中文久久| 欧美精品色综合| 99精品在线免费| 精品亚洲aⅴ乱码一区二区三区| 亚洲人成网站在线| 国产午夜精品在线观看| 91麻豆精品久久久久蜜臀| av一区二区三区四区| 狂野欧美性猛交blacked| 亚洲综合久久久| 欧美激情一区二区| 欧美精品一区二区三区一线天视频| 色美美综合视频| kk眼镜猥琐国模调教系列一区二区| 久久精品国产一区二区三| 亚洲一线二线三线视频| 欧美激情一区二区三区不卡 | 国产一区二区女| 日韩精品五月天| 黄网站免费久久| 亚洲精品国产一区二区精华液 | 国产精品色哟哟| 精品三级在线观看| 欧美精品123区| 欧美日韩国产综合视频在线观看| 成人av电影在线| 国产一区二区免费在线| 奇米一区二区三区av| 午夜欧美电影在线观看| 一区二区三区在线影院| 亚洲私人影院在线观看| 日韩美女啊v在线免费观看| 久久久久久久久97黄色工厂| 欧美xxx久久| 久久婷婷色综合| 久久久一区二区三区捆绑**| 精品欧美一区二区三区精品久久| 777亚洲妇女| 日韩欧美区一区二| 精品国产99国产精品| xnxx国产精品| 国产欧美日韩精品在线| 欧美国产乱子伦| 国产精品美女www爽爽爽| 国产精品久久久久一区| 亚洲欧美经典视频| 亚洲午夜一区二区三区| 日韩高清中文字幕一区| 精东粉嫩av免费一区二区三区| 国产自产2019最新不卡| 国产精品影音先锋| 91在线免费视频观看| 欧美三区在线观看| 日韩一级二级三级| 久久精品视频免费| 亚洲色图色小说| 亚洲1区2区3区4区| 狠狠狠色丁香婷婷综合激情| 国产成人自拍网| 色综合久久久久综合体桃花网| 欧洲激情一区二区| 精品国产亚洲在线| 国产精品久久久99| 亚洲v日本v欧美v久久精品| 久久精品国产999大香线蕉| 成人黄页毛片网站| 久久精品人人做人人综合 | 亚洲欧美另类小说视频| 一区二区三区在线免费视频| 视频一区二区欧美| 国产成人免费在线观看| 欧美在线色视频| 久久网站热最新地址| 一区二区三区美女| 久久97超碰国产精品超碰| 99精品视频一区二区三区| 在线电影欧美成精品| 国产偷国产偷精品高清尤物| 亚洲激情一二三区| 精品在线免费观看| 在线中文字幕不卡| 国产色婷婷亚洲99精品小说| 亚洲男人天堂av网| 久久国产三级精品| 91久久精品国产91性色tv| 日韩欧美中文字幕制服| 亚洲日本va午夜在线电影| 美女久久久精品| 91福利社在线观看| 中文字幕乱码亚洲精品一区| 日韩黄色一级片| 色综合久久88色综合天天6| 精品国产99国产精品| 天天综合天天做天天综合| 成人精品视频.| 日韩视频在线观看一区二区| 夜色激情一区二区| 波多野结衣91| 精品国产乱子伦一区| 亚洲电影中文字幕在线观看| av中文字幕在线不卡| 亚洲精品一区在线观看| 奇米一区二区三区av| 欧美色区777第一页| 亚洲欧洲精品成人久久奇米网 | 99综合影院在线| 久久久亚洲欧洲日产国码αv| 婷婷国产在线综合| 欧美在线观看一区二区| 中文字幕亚洲区| 国产99久久久国产精品潘金网站| 欧美一区二区精品| 日韩中文字幕区一区有砖一区 | aaa亚洲精品一二三区| 久久精品视频在线看| 精品一二三四区| 欧美tickling挠脚心丨vk| 天天色 色综合| 欧美福利电影网| 国产精品二三区| 极品瑜伽女神91| 91精品国产色综合久久ai换脸 | 国产高清精品网站| 337p粉嫩大胆色噜噜噜噜亚洲| 日本不卡视频一二三区| 欧美日韩电影一区| 污片在线观看一区二区| 欧美精品电影在线播放| 日韩av一区二区在线影视| 91精品国产综合久久福利软件| 亚洲大片精品永久免费| 欧美疯狂做受xxxx富婆| 日韩二区三区四区| 欧美一区二区三区在线看| 毛片av一区二区| 精品久久久久久亚洲综合网| 精品亚洲免费视频| 国产性天天综合网| 99久久免费视频.com| 亚洲已满18点击进入久久| 欧美日韩精品欧美日韩精品一| 香蕉影视欧美成人| 日韩免费视频一区| 国产精品资源站在线| 中文字幕在线不卡视频| 在线亚洲欧美专区二区| 天天av天天翘天天综合网色鬼国产| 欧美一区二区在线视频| 国产一区二区三区四区五区美女 | 国产在线观看免费一区| 久久精品欧美一区二区三区不卡| 国产传媒日韩欧美成人| 最新成人av在线| 欧美精品v日韩精品v韩国精品v| 日韩av一区二区在线影视| 国产亚洲欧美激情| 欧美一区国产二区| 日韩精品中午字幕| 日本成人在线网站| 欧美日韩国产精品成人| 久久狠狠亚洲综合| 亚洲人妖av一区二区| 69p69国产精品| 福利一区二区在线|