问题标签 [iprogressdialog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
842 浏览

delphi - 在 Delphi 中取消 IProgressDialog

我正在运行一个长时间的操作,我想出一个向用户展示它的好方法是使用一个使用该IProgressDialog对象的系统进度对话框。

我只找到了几个用法示例,这是我的实现。我遇到的问题是应用程序仍然没有响应(我知道我可能需要使用线程),而且取消按钮根本不起作用(这可能是第一个问题的连续性。)

我在 Windows 8.1 下使用 Delphi XE。

编辑:我Application.ProcessMessages在评估之前添加了一个调用,HasUserCancelled但它似乎没有多大帮助(对话框仍然没有处理单击取消按钮。)

0 投票
1 回答
988 浏览

android - Android 加载带有进度对话框的列表视图

这是我加载列表视图项目的代码

当我运行代码时,进度对话框已经出现但是在它关闭后我发现列表是空的,没有添加任何项目我不知道问题是什么以及为什么在对话框加载后列表是空的。请需要帮助谢谢进步。

0 投票
0 回答
60 浏览

java - Show ProgressBar with windowClosing(WindowEvent we)

我有一个 JFrame。Frame 在 EDT 上执行。正在使用窗口适配器将窗口关闭事件添加到该框架。我需要的是;有一个后台任务,删除应用程序生成的文件;当单击框架的关闭按钮时,该任务开始运行。我想显示该后台任务的进度条?


试图在进程中添加进度条,但没有显示。然后我在新线程中调用它;仍然没有成功。你能告诉我如何做到这一点吗?

无论哪种方式,我都习惯在新线程中调用它,它不起作用。原因是; 后台任务在新线程中执行,windowClosing 结束并关闭应用程序。如果我没有它就调用它;它使 UI 无响应。

提前致谢。

0 投票
2 回答
3798 浏览

android - 带有动画列表的自定义进度条

我想创建一个应该显示移动图像效果的进度条。为此我创建了一个动画列表并保存在我的可绘制文件夹中。这是代码:

之后我像这样使用了这个drawable:对于我的ProressBar Drawable

问题:运行此代码时没有显示任何内容。为什么 ?当我使用任何单个图像而不是动画列表可绘制对象时,它会正确显示。还有其他的吗?

0 投票
3 回答
519 浏览

winapi - IProgressDialog 问题:我是否误解了它的多线程,因为我似乎需要一个消息泵?我可以避免在它结束之前打开另一个对话框吗?

我正在尝试在 PROGDLG_MODAL 模式下使用 IProgressDialog 并且遇到了两个障碍。

首先,根据我从 MSDN 收集到的信息以及<shlobj.h>描述 IProgressDialog 的头文件中的块注释,您应该直接从您正在工作的线程中使用它,并且 IProgressDialog 将从另一个线程执行它的 UI 工作;那是,

足以启动并运行响应式进度对话框。

但是,在实践中,我仍然需要在do_more_work(); 如果我不这样做,直到循环结束后才会显示进度对话框!那么,当它说“对象然后在后台线程上处理更新”时,我是否误解了 MSDN?好的,所以我确实需要发送消息,但现在我仍然对 MSDN 所说的内容感到困惑:我可以从我的工作线程运行 IProgressDialog 的哪些方法?知道了这一点,我可以正确地重构我的代码。

然而,一个更可怕的问题是它StopProgressDialog()不会立即拆除窗户。事实上,两者都没有Release()!在非模态情况下,进度对话框会在屏幕上停留一段时间。这个特定的问题之前已经解决过;我会解决的。然而,这一次,我将进度对话框用作 UI 模式对话框。MessageBox()如果我碰巧在释放 IProgressDialog 后立即调用了另一个对话框函数,例如,那么我们将得到两个具有相同所有者窗口的模态对话框:进度对话框会自行关闭并重新启用主窗口,而消息框是仍在运行。

其他人仅通过在调用后隐藏进度对话框StopProgressDialog()来解决非模态情况。虽然这确实隐藏了窗口,但它对模态没有任何作用。基于问题提问者在链接问题末尾的假设,我还尝试在WM_NULL之后发布和发送 s StopProgressDialog()。那也没用。

最后,我尝试设置一个 WinEvents 挂钩,等待窗口被销毁并在它被销毁时触发一个事件对象。这确实有效;在MessageBox()进度对话框被销毁之前不会发生。但是,这并不完美:主窗口不会立即再次变为活动状态,并且在MessageBox()我单击主窗口的任务栏图标之前,它甚至不会出现在后台。

(即便如此,因为我无法将 LPARAM 传递给我的 WinEvents 挂钩,如果我想跨不同线程处理多个 IProgressDialogs,我需要有一个全局的窗口句柄列表来监视(及其关联的事件对象),即同步。幸运的是,出于我的目的,我不需要它。此外,以上所有内容都假设 CLSID_ProgressDialog 也是一个 IOleWindow;如果情况发生变化,那么......)

我用这种 WinEvents 方式做错了吗?我怀疑我没有MsgWaitForMultipleObjectsEx()正确调用,但如果事实证明 IProgressDialog 没有正确实现模态,那么我想我不走运:S

下面的示例程序完成了上述所有操作。我已经在 Windows 7 64 位(构建为 64 位)上使用 Visual Studio 2013 对其进行了测试。

更新嗯,经过进一步检查,当我停止进度对话框而不显示消息框时,所有者窗口也不会重新获得焦点!我猜进度对话框根本无法正确处理模态;如果我删除PROGDLG_MODAL标志一切正常。哦,好吧:/我将不得不伪造这种方式或切换到其他方式。

我可能只是在进度对话框本身上显示我的消息框,并希望未来版本的 Windows 不会带走 IOleWindow。除非有更好的方法?或者除非手动执行模态并在调用后保持进度对话框不模式StopProgressDialog()足够好(只会在StopProgressDialog()开始后报告错误),然后再次......