【问题标题】:How to download a file in wxWidgets with a progress dialog?如何使用进度对话框在 wxWidgets 中下载文件?
【发布时间】:2012-09-14 21:59:09
【问题描述】:

我这里有一些代码会生成 wxProgressDialog 并从 Internet 下载文件,但我不知道如何在文件下载时更新进度条。我一直在寻找这方面的文档,但令人惊讶的是,我找不到与我想要完成的任务类似的东西。

void Downloader::Download(void)
{
    wxProgressDialog dlgProgress(_T("Downloading..."),
                                 _T("Please wait while your file downloads."));

    wxURL dl(Url);
    if (dl.GetError() == wxURL_NOERR)
    {
        wxInputStream *in = dl.GetInputStream();
        if (in && in->IsOk())
        {
            wxFFileOutputStream out(mPath);
            in->Read(out);
        }
        delete in;
    }
}

【问题讨论】:

  • 您真的应该解释一下您是如何设法找不到 Update() 的文档...
  • 我当然做到了,但 Update() 并不神奇。我的问题是让这些更新与下载进度保持同步。

标签: c++ dialog download progress-bar wxwidgets


【解决方案1】:

查看 wxWidgets 发行版中的“对话框”示例,您会发现可以调用 Update()Pulse() 来更新对话框。

【讨论】:

  • 这不能回答我的问题 - 我如何在文件下载时跟踪文件的下载进度?我知道如何更新/脉冲进度条。
  • 啊,对不起,我误解了你的问题。但是后来您确实写了“无法弄清楚如何更新进度条”。无论如何,如果您事先知道文件的大小,您可以以一定大小的块(通常为 4KB)读取它并像这样管理它。您无法通过使用当前执行的 Read() 重载读取整个流来做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2023-03-21
  • 1970-01-01
  • 2018-10-14
  • 2013-08-02
  • 1970-01-01
相关资源
最近更新 更多