按钮控件需要一些时间才能在对话框中禁用

Posted

技术标签:

【中文标题】按钮控件需要一些时间才能在对话框中禁用【英文标题】:Button control takes some time to disable in dialog box 【发布时间】:2014-10-28 09:53:16 【问题描述】:

我正在尝试从对话框中的主线程执行一些冗长的操作。在那段时间里,我想禁用一些控件。我为每个控件使用了 EnableWindow(FALSE) 来禁用它。但除了按钮控件之外,所有其他控件(即滑块控件、CMFCEditBrowse 控件、ComboBox 控件)都在处理之前完全禁用。但是按钮控件需要更多时间才能禁用。当操作即将结束时,它们几乎被禁用。为什么当我调用 EnableWindow(FALSE) 时按钮控件没有被禁用?为什么禁用需要时间?

【问题讨论】:

【参考方案1】:

您需要完全在另一个线程中执行后台任务,并在另一个线程中更改 UI/控件。如果直接调用EnableWindow 不起作用,您应该使用PostMessage。例如,SetFocus 不能在不同的线程中工作。

【讨论】:

如果假设我的 UI 线程正忙于执行冗长的操作,并且 EnableWindow(false) 发布的消息正在队列中等待处理,那么不应禁用所有控件,对吗?我的问题是为什么单独的按钮控件没有禁用?

以上是关于按钮控件需要一些时间才能在对话框中禁用的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 Qt Mainwindow 快捷方式适用于无模式对话框

在 Jquery UI 对话框中禁用关闭按钮 [重复]

MFC中的Eidt控件怎样才能实时显示更新的内容?

当我按 Enter 键时,选项卡控件的选项卡页会关闭

使用QT 4.7 - 对话框正忙着加载一件大事;如何禁用所有控件?

MFC禁用关闭按钮