在多线程中显示模态窗口,出现异常现象

无意间发现如果在多线程中显示模态窗口后,当这个模态窗口关闭后,原来的主窗口无法再次响应鼠标事件了。

就是窗口上的按钮用鼠标点击没反应,整个窗口看上去像是禁用的状态。

具体原因到现在没找到。

最后的解决办法: 在多线程中,使用 SendMessage() 发送一个【用户自定义消息】, 然后由UI线程来接收,并显示模态窗口,这个时候当模态窗口关闭后,主窗口还是处于激活的状态,窗口上的按钮可以正常点击和响应。

同时我发现,如果在多线程中,调用 MessageBox() 来弹出模态对话框,当关闭对话框后,主窗口处于正常状态,可响应鼠标点击。

不知为什么,我自已写的自定义的模态窗口在多线程中就不能直接显示呢?

原文地址:https://www.cnblogs.com/personnel/p/10303097.html

时间: 2024-11-08 23:44:30

在多线程中显示模态窗口,出现异常现象的相关文章

C# 在winform或者wpf中显示控制台窗口

这儿需要使用两个系统函数: BOOL WINAPI FreeConsole(void); //// 关闭控制台窗口,参考:http://msdn.microsoft.com/en-us/library/ms683150%28VS.85%29.aspx BOOL WINAPI AllocConsole(void); //// 打开控制台窗口,参考:http://msdn.microsoft.com/en-us/library/ms681944%28VS.85%29.aspx对应DLL:Kernel

iOS开发 - 在SwiftUI中显示模态视图

在SwiftUI中显示模态视图 简介 这里教大家如何弹出一个简单的模态视图.分别有两个页面,ContentView和GCPresentedView,以下对应简称为A和B.我们要做的是在A视图中点击按钮跳转到B视图,然后再从B视图点击按钮返回到A视图. 步骤 在A视图中创建按钮和模态视图代码 struct ContentView: View { @State var isPresented = false var body: some View { Button(action: { self.is

在线程中显示一个窗口(多个UI线程)

多数耗时操作可以异步执行,推荐async/await. 但和UI相关的部分仅能在UI线程执行,这时UI线程的耗时操作,导致界面卡死,不够友好. 我们可以创建一个单独的UI线程显示一个正在加载的窗口,可以在窗口显示一些动画之类的. 如果是WinForms那么很容易做到. Application.Run(new LoadingForm()); WPF没有提供这样简单的方式,官方文档中有示例<多窗口.多线程>,官方例子 ExceptionHandlingSecondaryUIThread 经过简化后

Excel在任务栏中只显示一个窗口的解决办法

Excel在任务栏中只显示一个窗口的解决办法 以前朋友遇到过这个问题,这次自己又遇到了,习惯了以前的那种在任务栏中显示全部窗口,方便用Alt+Tab键进行切换. 如果同时打开许多Excel工作簿,在桌面任务栏中通常会显示多个工作簿窗口按钮.如果任务栏只中显示了一个Excel窗口按钮,所有的工作簿窗口只出现在Excel程序窗口内部,可能是相关的设置被改动了,可以通过下面方法改回设置: 在Excel 2003中单击菜单“工具→选项”,选择“视图”选项卡,选择“任务栏中的窗口”. 在Excel 200

Ionic最佳实践-使用模态窗口modal

原文地址:Ionic最佳实践-使用模态窗口modal 模态窗口的结构 在Ionic中,模态窗口通过$ionicModal提供.他易于使用且非常强大,详细信息请参考$ionicModal文档.Ionic中的模态窗口可以使用模板字符串或URL创建.本文将使用URL. 模态窗口创建时绑定到一个scope,这个scope可以用来传递数据.然而,在更复杂的情况下,通过服务来访问共享数据是最好的做法. 制作模态窗口的标记 创建模态窗口非常简单.首先,让我们来创建我们的用户界面.这个小例子将会展示一条联系人信

使用jQuery创建模态窗口登陆效果

来源:GBin1.com 在线下载 在线演示 隐藏模态窗口技术是一种很好的解决方案,用于处理不是特有必要出现在网页上的界面元素.社交网络可以使用模态窗口传达私人讯息以及只针对会员才能看 到的表单.在博客和杂志网站也适用于与主网站分开的作者登陆页面,模态窗口比在JavaScript中创建新窗口更容易,因为使用HTML标记显示,所有 的东西能都呈现在同一个窗口中. 我将演示如何利用jQuery插件leanModal建立一个常规模态窗口.如果你有MIT general license,那么这个插件是完

[转]Ionic最佳实践-使用模态窗口modal

本文转自:http://m.blog.csdn.net/blog/betreex/45649689 原文地址:Ionic最佳实践-使用模态窗口modal 模态窗口的结构 在Ionic中,模态窗口通过$ionicModal提供.他易于使用且非常强大,详细信息请参考$ionicModal文档.Ionic中的模态窗口可以使用模板字符串或URL创建.本文将使用URL. 模态窗口创建时绑定到一个scope,这个scope可以用来传递数据.然而,在更复杂的情况下,通过服务来访问共享数据是最好的做法. 制作模

统计图钻取的明细报表在非模态窗口中显示

润乾报表的统计图可以在图例 / 图形上设置超链接,从而实现钻取到明细报表的操作,钻取得到的报表可以在新窗口或者当前窗口中打开.关于如何在统计图的图形 / 图例上设置超链接,在用户手册中有常用示例的介绍.今天小编要给大家介绍的是如何在非模态窗口中打开图形超链接钻取得到的报表.首先创建一张带有统计图的报表,报表文件名为 planWorkView2.rpx.增加数据集 ds1, 下面是 ds1 的数据: 在 A2 单元格中增加一个柱形图,统计图的分类和系列值数据分别来源于数据集 ds1 的 ORG_N

C#.NET中使用BackgroundWorker在模态对话框中显示进度条

这里是一个示例,其中展示了如何使用Backgroundworker对象在模态对话框中显示后台操作的实时进度条. 首先是主窗体代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;