【问题标题】:Progress bar c++ [closed]进度条 C++ [关闭]
【发布时间】:2017-07-08 14:10:24
【问题描述】:

我正在创建一个简单的服务器控制台应用程序。此服务器可在 Windows 上运行。

我想制作一个进度条并在服务器向客户端发送文件时打印它。但是不知道怎么用winapi实现。

谁能解释一下?

【问题讨论】:

  • 有人能解释一下吗? 当我们不知道您使用的是什么 api / 框架时,这是不可能的。我假设你的意思是winapi。或者您是否在使用其他一些框架,例如 Qt 或 mfc 或 wxwidgets?
  • 是的,我是说winapi
  • 这是控制台应用程序
  • 我本来打算将 winapi 添加为标签,但你说的是控制台应用程序。为此,我假设您想要某种类型的文本进度条,可能会使用越来越多的星星。
  • @drescherjm 可以利用来自控制台应用程序的 WinAPI 调用。甚至在上面画画。它的实用性有待商榷。

标签: c++ windows console-application


【解决方案1】:

您可以使用回车符 (\r) 在控制台的同一行上书写。使用这种技术,您基本上可以覆盖旧进度并打印新进度,从而产生“移动”进度条。这独立于任何 api 工作,仅使用 c++ 并且它在 Windows 控制台上工作。

int barLength = 30;
int pos = progress * barLength;

std::cout << "[";
for(int i=0; i != barLength; ++i)
{
    if(i < pos)
        std::cout << "#";
    else
        std::cout << " ";
}
std::cout << "]\r";

您了解概念并可以根据需要调整外观。 只需将进度值作为双倍传递给此 (100% = 1.0)。 如果进度为 1.0,则编写一个部分可能很有用,以便打印一个完整的条,并在末尾带有 \n 或 std::endl。

【讨论】:

  • 如果我有发送给客户端的文件大小,如何计算progress?
  • 您需要跟踪已发送的字节数。然后它只是 sentBytes/totalBytes (或您计算的任何其他单位)
  • 非常感谢)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多