【问题标题】:Changing contents of EditBox while processing an Event handler in VC++ mfc在 VC++ mfc 中处理事件处理程序时更改 EditBox 的内容
【发布时间】:2017-06-13 18:13:41
【问题描述】:

当我在 VC++ 中按下一个按钮时,程序开始从 USB 读取数据,这需要几分钟才能完成。在此操作期间,我想使用m_editCtrl.SetWindowTextW(output1); 在同一对话框中的编辑框中显示进度状态但在传输过程中编辑框的内容不会更改。我们怎样才能改变它?

谢谢

【问题讨论】:

  • 由于您的 I/O 需要一些时间,您需要在单独的线程上执行它。
  • 不要在您的 UI 线程上执行长时间运行的任务。您可以将工作卸载到工作线程,或使用异步 I/O。
  • 如何创建另一个线程? @rrrower

标签: visual-c++ mfc overlap overlapping


【解决方案1】:

如果主线程像循环一样忙碌,它不会更新 GUI。您应该创建一个执行繁重工作的线程,然后该线程应该将更新消息发布到 GUI。

Here 是一个入门示例,可以完成这项工作,但可以改进。在本例中,线程直接调用 GUI API,但如果您使用 HWND 向父窗口发布消息,它会自行更新,效果会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多