c 进度条(c进度条控件)

更新时间:2023-03-01 00:21:45 阅读: 评论:0

如何用C语言实现进度条

给题主一个简单的进度条程序吧~

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>

#defineLEN10/*进度条长度*/

intmain(void){
floatp;/*进度条刻度*/
floatprogLen;/*程序总耗时*/
inti,j;
progLen=15.0;
for(i=1;i<=progLen;i++){
system("cls");
p=(i/progLen)*LEN;/*计算程序当前进度之于进度条的比例*/
for(j=1;j<=(int)(p+0.5);j++)/*打印已执行刻度*/
printf("■");
for(j=1;j<=LEN-(int)(p+0.5);j++)/*打印待执行刻度*/
printf("□");
printf("%.1f%%",(i/progLen)*100);/*计算程序当前进度的百分比*/
Sleep(150);
}
putchar('\n');
getch();
return0;
}

运行结果


如何用C语言实现进度条

第一种,用printf模拟输出百分比,在控制台输出,实现进度监控。

代码:

#include<stdio.h>
#defineN20
voidmBar(floatfBar){

inti,j,k,m;
for(i=0;i<N+6;i++)printf("\b");
k=N*fBar;m=fBar*100;printf("[");
for(i=0;i<k;i++)printf("=");
for(j=0;j<N-k;j++)printf("");
printf("]%3d%%",m);
}
voiddelay(intn){inti,j,k;for(i=0;i<n;i++)for(j=0;j<0x07fff;j++)k++;}
voidmain()
{
floatx;
inti;
for(i=0,x=0;i<100;i++,x+=0.01){mBar(x);delay(1024);}
mBar(1);
}

第二种,使用窗口组件。这个要看程序工作环境,纯粹的c语言是无法实现的。可以使VC++。Visual C++中的MFC类提供了标准的进度指示器控件(CProgressCtrl)。

m_progress->GetPos(); //获取进度条的当前位置
m_progress->GetRange(int min,int max); //获取进度条控件的范围的下限和上限
m_progress->OfftPos(int nPos); //用指定的增量推进进度条控件的当前位置,重绘进度条反映新位置
m_progress->SetBkColor(COLORREF clrNew); //设定进度条的背景颜色
m_progress->SerPos(int nPos); //设定进度条控件的当前位置,重绘进度条反映新位置
m_progress->SetRange(int min,int max); //设定进度条控件的范围的下限和上限
m_progress->SetRange32(int min,int max); //设定进度条控件的范围的下限和上限
m_progress->SetStep(int nStep); //指定进度条控件的步进增量
m_progress->StepIt(); //通过步进增量,推进进度条控件的当前位置,重绘进度条反映新位置

应用:
CProgressCtrl *m_progress; //头文件中声明
在OnInitDialog初始化
{
m_progress = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
m_progress->SetRange(0,1000);
m_progress->SetPos(0);
UINT m_timer =(UINT) SetTimer(1,200,NULL);
}

采用在定时器的消息处理函数WM_TIMER内添加不断更新进度条界面的方法
OnTimer (nIDEvent)
{
pos = pos + 50;
if(pos>500)
pos = 0;
m_Progress->SetPos(pos);
}
或者采用在某种循环体内添加不断更新进展条界面的方法


进度条的C语言

(来自网络) #include <windows.h>
#include <commctrl.h> //InitCommonControls
//过程函数的返回值都是LRESULT,类型都是CALLBACK
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd; //主窗口句柄,在CreateWindow中赋值
MSG msg; //消息变量,在GetMessage中使用
WNDCLASS wndclass; //窗口类
TCHAR* szAppName = TEXT(ProgressBar); //类名和窗口名
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); //鼠标
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); //图标
wndclass.lpszClassName = szAppName; //类名
wndclass.cbClsExtra = 0; //类的额外参数
wndclass.cbWndExtra = 0; //窗口的额外参数.用于基于同一窗口类的窗口各自区分.
//在自定义对话框类时必须指定为DLGWINDOWEXTRA的大小
wndclass.lpszMenuName = NULL; //菜单名.可以用作子窗口的id
wndclass.style = CS_HREDRAW | CS_VREDRAW; //窗口风格
wndclass.lpfnWndProc = WndProc; //窗口过程
wndclass.hInstance = hInstance; //包含窗口过程的实例句柄
if( !RegisterClass(&wndclass) ) //注册窗口类
return 0;
hwnd = CreateWindow( //创建窗口
szAppName, //窗口类名
szAppName, //窗口标题
WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX, //窗口风格
CW_USEDEFAULT, //初始的x坐标
CW_USEDEFAULT, //初始的y坐标
480, //初始的宽度
200, //初始的高度
NULL, //父窗口
NULL, //菜单
hInstance, //和窗口相关的实例句柄
NULL //额外参数
);
ShowWindow( hwnd,nCmdShow ); //显示窗口
UpdateWindow( hwnd ); //更新窗口
while( GetMessage(&msg,NULL,0,0) ) //消息循环
{
TranslateMessage(&msg); //将WM_XXXKEYXXX消息翻译为WM_CHAR消息
DispatchMessage(&msg); //传递消息到窗口过程
}
return msg.wParam; //返回
}
DWORD WINAPI PBThreadProc( LPVOID lpParameter )
{
HWND hwndPB = (HWND) lpParameter; //进度条的窗口句柄
PBRANGE range; //进度条的范围
SendMessage( hwndPB, PBM_SETRANGE, //设置进度条的范围
(WPARAM)0, (LPARAM)(MAKELPARAM(0,100)) );
SendMessage( hwndPB, PBM_GETRANGE, //获取进度条的范围
(WPARAM)TRUE, //TRUE 表示返回值为范围的最小值,FALSE表示返回最大值
(LPARAM)&range );
while(TRUE)
{
SendMessage( hwndPB, PBM_DELTAPOS, //设置进度条的新位置为当前位置加上范围的1/40
(WPARAM)((range.iHigh-range.iLow)/40), (LPARAM)0 );
if( SendMessage( hwndPB, PBM_GETPOS, (WPARAM)0, (LPARAM)0 ) //取得进度条当前位置
== range.iHigh )
{
SendMessage( hwndPB, PBM_SETPOS, (WPARAM)range.iLow, (LPARAM)0 ); //将进度条复位
}
Sleep(1000); //每1秒更新一次进度条
}
}
LRESULT WINAPI WndProc( HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam )
{
static HWND hwndPB;
switch( message )
{
ca WM_CREATE:
{
InitCommonControls(); //确保已注册了进度条类PROGRESS_CLASS
hwndPB = CreateWindowEx(
0,
PROGRESS_CLASS,
NULL,
WS_CHILD | WS_VISIBLE,
0,0,0,0, //位置和大小在WM_SIZE中设置
hwnd,
(HMENU)0,
((LPCREATESTRUCT)lParam)->hInstance,
NULL);
CreateThread( //操作进度条的线程
NULL,
0,
(LPTHREAD_START_ROUTINE)PBThreadProc,
hwndPB,
0,
0
);
return 0;
}
ca WM_SIZE:
{
RECT rc;
GetClientRect(hwnd, &rc);
MoveWindow(
hwndPB,
rc.left,
(rc.bottom - rc.top )/4,
rc.right - rc.left,
(rc.bottom - rc.top )/10,
TRUE
);
return 0;
}
ca WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc( hwnd,message,wParam,lParam );
} 可以用到资源文件(.rc)
//
// SUPPORT FOR WINDOWS XP THEMES:
// THIS WILL MAKE THE PROGRAM USE THE COMMON CONTROLS
// LIBRARY VERSION 6.0 (IF IT IS AVAILABLE)
//
1 24 CtrlProgressBar.exe.Manifest


C语言进度条

程序1:#include "stdio.h"
#include <dos.h>
#include <conio.h>
/*去光标函数*/
void no_text_cursor(void)
{
union REGS r;
r.h.ah=1;
r.h.ch=32;
int86(0x10,&r,&r);
}
main()
{
int i;
int bfb;
char b=219;
char c='%';
for(i=1;i<=60;i++)
{ gotoxy(i,1); /*为了能在进度条和百分比之间变动*/
no_text_cursor();
delay(45000);/*前后两个delay是为了让滚动更好看,流畅*/
printf("%c",b);
delay(45000);
gotoxy(31,2); /*为了能在进度条和百分比之间变动*/
bfb=((i*10)/6);
printf("%d",bfb);
gotoxy(34,2);
printf("%");
}
printf("\nLoading Successful!");
getch();
}程序2:#include<graphics.h>
main()
{
int gdriver=DETECT,gmod,i;
/*registerbgidriver(EGAVGA_driver);*/
initgraph(&gdriver,&gmod,"");
tlinestyle(0,0,2);
rectangle(3,215,637,250);
tcolor(RED);
sleep(3);
for(i=0;i<632;++i)
{
if(i==631)break;
line(5+i,216,5+i,249);
delay(2888);
}
getch();
clograph();
} 以上程序均在TC2.0下通过

C语言做一个百分比进度条

<p>您好,sa团队给出的答案</p> <p>(由于本人不用做百分比进度条,所以从网上找了一个,不知道对不对,仅供参考)</p> <p>#!/bin/sh<br>off (){<br>echo -e "\e[?25l"<br>}<br>on (){<br>echo -e "\e[?25h"<br>}<br>gotoxy (){<br>echo -ne "\e[$1;$2h"<br>}<br>character (){<br>gotoxy 0 0<br>echo "["<br>gotoxy 0 44<br>echo "]"<br>n=2<br>num=0<br>while [ $n != 44 ]<br>do<br>sleep 0.07<br>gotoxy 0 $n<br>echo -en "\e[1;44m \e[0m"<br>gotoxy 0 45<br>echo -n "$num%"<br>num=$(echo "$n * 2.3 + 1" | bc )<br>(( n++ ))<br>done<br>gotoxy 0 45<br>echo -n "100.0%"<br>}<br>clear<br>off<br>character <br>on</p> <p> </p> <p> </p> <p>这里有一个网址,提供给您(cfm补丁0.2版,增加了进度条,百分比等内容的显示 </p> <p>): <a href="https://wenwen.sogou.com/login/redirect?url=http%3a%2f%2fclub.noahedu.com%2fthread-116262-1-1.html" target="_blank">http://club.noahedu.com/thread-116262-1-1.html</a></p>

C语言做一个百分比进度条

1.c和js通信 可以用xml来解决,这个就不详细讲了 2.进度条,使用css百分比做,比如: html code <div id="warp" style="width:100px;height:10px;border:1px solid #eee;background:#000;overflow:hidden"><!-#warp用以包裹进度以及显示这个进度条-><div id="point" style="width:[color=#ff0000]90%[/color];background:#44a;height:10px;"></div><!-#point利用百分比控制实现和进度条一直的效果,后面需要的是利用js做width的值的赋值操作如果你的c中不断有当前进度进行输出,那可以在页面中不断调用js函数读取该输出变量,然后调整进度条,

本文发布于:2023-02-28 19:10:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167760130553343.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:c 进度条(c进度条控件).doc

本文 PDF 下载地址:c 进度条(c进度条控件).pdf

上一篇:失落的宝藏
下一篇:返回列表
标签:进度条   控件
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|