控制台实现进度条




#include "stdio.h"
#include 
#include 

int g_iCnt = 0;
int l_iSum = 10000;

HANDLE hSemaphore;

void vDisplayProBar(int p_iNumBarCh, int p_iCompletedValue, int p_iSumValue);

unsigned int _stdcall ThreadFun(void *pPM);

int main()
{
	DWORD l_dwStartTime = 0;
	DWORD l_dwEndTime = 0;
	
	hSemaphore = CreateSemaphore(NULL, 0, 1, NULL);
	
	HANDLE handle = (HANDLE)_beginthreadex(NULL, 0, ThreadFun, 0, 0, NULL);	
	
	Sleep(1000);
	
	g_iCnt = 0;
	l_dwStartTime = GetTickCount();
	while(g_iCnt100 || g_iCnt>=l_iSum)
		{
			l_dwStartTime = l_dwEndTime;
			ReleaseSemaphore(hSemaphore, 1, NULL);
		}
	}
	Sleep(100);
	printf("\n%d\n", g_iCnt);
	CloseHandle(hSemaphore);	
	return 0;
}

void vDisplayProBar(int p_iSumBarCh, int p_iCompletedValue, int p_iSumValue)
{
	
	char l_acStr[20] = "";
	int i = 0;
	static int l_iLastNumBarChToDis = 0;
	int l_iNumBarChToDis = (int)(((float)p_iCompletedValue)/((float)p_iSumValue)*p_iSumBarCh);
				
	for(i=0; i");
		}
		else
		{
			printf("=");
		}
	}
	
	_snprintf(l_acStr, sizeof(l_acStr), "    %.2f%%", ((float)p_iCompletedValue/(float)p_iSumValue)*100);	
	printf("%s", l_acStr);
	for(i=0; i


参考链接:

http://blog.csdn.net/morewindows/article/details/6742078









你可能感兴趣的:(C/C++)