#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
// 获取控制台窗口句柄 微软官方网站的程序 直接拿来用了
HWND GetConsoleHwnd(void)
{
#define MY_BUFSIZE 1024 // Buffer size for console window titles.
HWND hwndFound; // This is what is returned to the caller.
char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
char pszOldWindowTitle[MY_BUFSIZE]; // Contains original
GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
wsprintf(pszNewWindowTitle,"%d/%d",
GetTickCount(),
GetCurrentProcessId());
SetConsoleTitle(pszNewWindowTitle);
Sleep(40);
hwndFound=FindWindow(NULL, pszNewWindowTitle);
SetConsoleTitle(pszOldWindowTitle);
return(hwndFound);
}
void settitle(char s[])
{
SetConsoleTitle(s);
}
void pb()//绘制进图条框架
{
HWND hConsole = GetConsoleHwnd(); // 获得控制台窗口句柄
HDC hDC = GetDC(hConsole); // 获得控制台窗口绘图DC
HPEN hPen = CreatePen(PS_SOLID,1,RGB(200, 0,0)); // 创建一个画笔 相关知识查找MSDN 输入GDI方面的知识 创建填充用的笔刷用Brush
HPEN hOldPen = (HPEN)SelectObject(hDC, hPen); // 让DC选择此画笔
// 画外层矩形框
MoveToEx(hDC,10,10, NULL);
LineTo(hDC, 10,40);
MoveToEx(hDC,10,40,NULL);
LineTo(hDC,490,40);
LineTo(hDC,490,10);
LineTo(hDC,10,10);
//画里层矩形框
hPen=CreatePen(PS_SOLID,1,RGB(0,200,0));
hOldPen=(HPEN)SelectObject(hDC,hPen);
MoveToEx(hDC,13,13, NULL);
LineTo(hDC, 13,37);
LineTo(hDC,487,37);
LineTo(hDC,487,13);
LineTo(hDC,13,13);
ReleaseDC(hConsole, hDC);// 释放DC
}
void proct()
{
HWND hConsole=GetConsoleHwnd();
HDC hDC=GetDC(hConsole);
int i;
HPEN hPen=CreatePen(PS_SOLID,1,RGB(0,0,200));
HPEN hOldPen=(HPEN)SelectObject(hDC,hPen);
printf("\n\n\n\n\t\t\t");
printf("进度加载:0%%");
for(i=1;i<473;i++)
{
MoveToEx(hDC,14+i,15, NULL);
hPen=CreatePen(PS_SOLID,1,RGB(i/2,255-i/2,200));
hOldPen=(HPEN)SelectObject(hDC,hPen);
LineTo(hDC, 14+i,35);
_sleep(50);
printf("\b\b\b%2d%%",i*100/472);
}
}
void main()
{
char s[]="炫彩进度条演示效果";
settitle(s);
pb();
proct();
printf("\n\n\n");
}
#include<windows.h>
#include<stdlib.h>
// 获取控制台窗口句柄 微软官方网站的程序 直接拿来用了
HWND GetConsoleHwnd(void)
{
#define MY_BUFSIZE 1024 // Buffer size for console window titles.
HWND hwndFound; // This is what is returned to the caller.
char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
char pszOldWindowTitle[MY_BUFSIZE]; // Contains original
GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
wsprintf(pszNewWindowTitle,"%d/%d",
GetTickCount(),
GetCurrentProcessId());
SetConsoleTitle(pszNewWindowTitle);
Sleep(40);
hwndFound=FindWindow(NULL, pszNewWindowTitle);
SetConsoleTitle(pszOldWindowTitle);
return(hwndFound);
}
void settitle(char s[])
{
SetConsoleTitle(s);
}
void pb()//绘制进图条框架
{
HWND hConsole = GetConsoleHwnd(); // 获得控制台窗口句柄
HDC hDC = GetDC(hConsole); // 获得控制台窗口绘图DC
HPEN hPen = CreatePen(PS_SOLID,1,RGB(200, 0,0)); // 创建一个画笔 相关知识查找MSDN 输入GDI方面的知识 创建填充用的笔刷用Brush
HPEN hOldPen = (HPEN)SelectObject(hDC, hPen); // 让DC选择此画笔
// 画外层矩形框
MoveToEx(hDC,10,10, NULL);
LineTo(hDC, 10,40);
MoveToEx(hDC,10,40,NULL);
LineTo(hDC,490,40);
LineTo(hDC,490,10);
LineTo(hDC,10,10);
//画里层矩形框
hPen=CreatePen(PS_SOLID,1,RGB(0,200,0));
hOldPen=(HPEN)SelectObject(hDC,hPen);
MoveToEx(hDC,13,13, NULL);
LineTo(hDC, 13,37);
LineTo(hDC,487,37);
LineTo(hDC,487,13);
LineTo(hDC,13,13);
ReleaseDC(hConsole, hDC);// 释放DC
}
void proct()
{
HWND hConsole=GetConsoleHwnd();
HDC hDC=GetDC(hConsole);
int i;
HPEN hPen=CreatePen(PS_SOLID,1,RGB(0,0,200));
HPEN hOldPen=(HPEN)SelectObject(hDC,hPen);
printf("\n\n\n\n\t\t\t");
printf("进度加载:0%%");
for(i=1;i<473;i++)
{
MoveToEx(hDC,14+i,15, NULL);
hPen=CreatePen(PS_SOLID,1,RGB(i/2,255-i/2,200));
hOldPen=(HPEN)SelectObject(hDC,hPen);
LineTo(hDC, 14+i,35);
_sleep(50);
printf("\b\b\b%2d%%",i*100/472);
}
}
void main()
{
char s[]="炫彩进度条演示效果";
settitle(s);
pb();
proct();
printf("\n\n\n");
}