C语言中如何控制只在某一个位置打印?比如进度百分比数字的显示。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中如何控制只在某一个位置打印?比如进度百分比数字的显示。相关的知识,希望对你有一定的参考价值。
想写个程序,类似进度条的东西,用字符拼的,但是这个进度条是随着扫描到的参数变量随时变化的(可大可小),不是类似拷贝一样只能前进的单向进度条。所以需要在某一个位置重复显示,这个效果如何做呢?而且表示百分比的数字也只在一个地方重复显示刷新,这个效果如何能做到呢?
在TC里用这个gotoxy(int x, int y);自己摸索一下~~ 参考技术A 让网易看如何用C语言实现进度条
我学校课程设计用,在网上找了半天没有哪位哥哥能给做出来帮忙传下,只能用C做哦,C++都不可以
最好是原代码,我对C不是很明白,麻烦了
有高手没啊?
第一种,用printf模拟输出百分比,在控制台输出,实现进度监控。
代码:
#include<stdio.h>#define N 20
void mBar(float fBar)
int i,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);
void delay(int n) int i,j,k; for ( i=0;i<n;i++ ) for ( j=0;j<0x07fff;j++ ) k++;
void main()
float x;
int i;
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->OffsetPos(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);
或者采用在某种循环体内添加不断更新进展条界面的方法
相关消息
PBM_GETPOS 得到当前位置
PBM_SETPOS 设置当前位置并重画,指向这个位置
PBM_GETRANG 得到进度条范围
PBM_SETRANG 设置进度条范围
PBM_SETRANG32 设置进度条范围
PBM_SETSTEP 设置步进长度
PBM_STEPIT 执行步进
详细内容得看MSDN.
c 语言的话基本就是WIN32 SDK了,翻MSDN吧本回答被提问者采纳
以上是关于C语言中如何控制只在某一个位置打印?比如进度百分比数字的显示。的主要内容,如果未能解决你的问题,请参考以下文章