`
jinvasshole
  • 浏览: 803083 次
文章分类
社区版块
存档分类
最新评论

解决线程中的非模式对话框

 
阅读更多

今天在演示网络编程的时候发现,子线程中的MessageBox.Show竟然不是模式对话框。
而主线程(窗体线程)的MessageBox是模式的。
虽然问题很小,但是可能会带来其他后果,对于程序员而言,任何一个小问题也不能忽视。仔细考虑了一下,主线程的对话框就是针对窗体的,所以是模式的。而子线程的对话框是在该线程上操作,如果要使其成为模式对话框就和主线程之间产生了关系。打开MSDN,其中有一个对话框声明是:MessageBox.Show (IWin32Window, String) ;IWin32Window是Win32句柄的接口,Form类间接实现了该接口,所以可以这样使用:MessageBox.Show((IWin32Window)this,"子线程对话框");在子线程运行后,发现成为了模式对话框。
小结:
1. 对待任何小节都不能忽视,应该用严谨的态度看待,并解决;
2. 线程的操作中可能会产生很多意想不到的问题,应该多测试并细心观察。

分享到:
评论
1 楼 tenwx1 2012-07-09  
正好想找这方面的资料,楼主真细心

相关推荐

    MFC多线程创建非模态对话框(防止一闪而逝)

    在本示例中,我们将讨论如何在MFC环境中创建一个非模态对话框,并通过多线程防止其“一闪而逝”的现象。 首先,我们要理解“一闪而逝”的问题。通常,当在主对话框的单击事件中直接创建并显示一个新的非模态对话框...

    MFC中解决子线程中打开非模态对话框内存泄漏实例(VC++2008)

    子线程中打开非模式对话框内存泄漏问题 这个问题困扰已久 网上没有完整的解决方案;现将实例源代码分享给大家 希望对您有帮助 (代码是VS2008下编写的) 问题原因: 对话框的默认关闭方式模式对话框关闭 而现在是...

    vc6.0 无模式对话框 源码+学习心得

    在提供的"无模式对话框学习心得.doc"文档中,可能包含了作者在学习过程中遇到的问题、解决方法以及一些实用技巧。例如,可能会探讨如何处理控件事件、对话框的动态加载和更新、多线程环境下的无模式对话框使用等高级...

    防止重复打开多个对话框

    3. **解决方案概述**:为了解决这一问题,可以通过在程序中实现对话框锁定机制来限制同时只能有一个对话框被打开。具体来说,可以使用操作系统提供的互斥对象(Mutex)来达到这个目的。 #### 技术细节 1. **互斥...

    MSN 消息对话框 .

    3. 文本框控件(TextBox):在对话框中,用户输入消息时会用到文本框。开发者需要设置文本框的多行模式,以便用户可以输入长篇消息。 4. 发送按钮(Button):用于发送消息,开发者需要为按钮添加点击事件处理程序,...

    PreTranslateMessage中调用DoModal出错的解决

    如果不是必要的话,可以考虑使用非模式对话框或者异步处理的方式。 2. **检查父窗口有效性**:在调用`DoModal`之前,可以通过检查父窗口的有效性来避免错误的发生。例如,可以先确认父窗口是否仍然有效。 ```cpp ...

    对话框皮肤快速切换实现

    本篇文章将重点讲解如何在对话框中实现皮肤的快速切换,特别是在Visual Studio 2008环境下,解决设置皮肤后可能遇到的性能问题。 首先,对话框换肤技术的核心是皮肤引擎。皮肤引擎是一种可以动态改变应用程序外观的...

    拼接时几个对话框窗口共享串口

    本例中提到的“拼接时几个对话框窗口共享串口”是一个关于多线程编程和串行通信的问题,它涉及到如何在多个对话框窗口之间有效地共享资源——即串口。 首先,我们要理解什么是串口通信。串口通信,也称为串行接口...

    ObjectARX及MFC开发常见的问题及解决方法总结.doc

    6. **使用对话框时的额外设置**:当在ObjectARX程序中使用对话框时,还需要在预处理器定义中添加`_WINDLL;_AFXEXT`,以确保对话框的正确运行。此外,还需要其他一些设置以避免CAD加载ARX后导致其他功能异常。 这些...

    window多文件多线程编程

    对话框是用户与应用程序交互的重要方式,Windows API中的DialogBox函数可以用来显示模态对话框,而CreateWindowEx可以创建非模态对话框。对话框通常包含各种控件,如文本框、按钮和列表框,这些控件的事件处理也需要...

    多线程并发代码的IntelliJ IDEA中调试方法.docx

    - 在弹出的对话框中勾选“Suspend when condition is true”,并在条件字段中输入合适的条件,例如`Thread.currentThread().getName().equals("Thread2")`。 通过这种方式,只有当满足条件的线程到达断点时才会暂停...

    多任务、进程和线程.doc

    为了解决这个问题,程序员通常会设计非模态对话框,并在其中分批执行后台操作,以便在执行长时间任务时仍能响应用户输入。例如,创建一个非模态对话框,显示工作进度,并通过禁用主窗口来确保用户可以取消任务。代码...

    渐变颜色 进度条 多线程

    在对话框中添加渐变颜色的进度条和多线程功能时,我们需要考虑布局管理,确保元素在窗口大小改变时仍能正确显示和排列。 总的来说,渐变颜色的进度条和多线程进度条是现代应用程序中提升用户体验的重要技术。它们...

    设计模式 中的 单例模式和观察者模式

    设计模式是软件工程中的一种最佳实践,用于解决常见的设计问题并提供可重用的解决方案。在给定的标题和描述中,我们关注的是两种重要的设计模式:单例模式和观察者模式。 首先,让我们深入了解单例模式。单例模式是...

    一例读懂设计模式-单例模式、简单工厂模式.zip

    单例模式广泛应用于日志记录器、缓存管理、线程池、对话框、注册表设置等场景,以确保在整个应用程序中对共享资源的一致访问。 2. **简单工厂模式**: 简单工厂模式是一种创建型设计模式,它提供一个工厂类来负责...

    用VC6_0MFC实现多线程网络编程

    客户端程序通常采用基于对话框的应用模式,包含一个工作者线程用于发送信息至服务器,以及一个用户界面线程用于接收和显示服务器传来的消息。客户端同样会创建一个`CSocket`实例,用于与服务器建立连接。当连接成功...

    vc数据库编程多线程和对象同步动态连接库

    "007对话框"是关于在MFC中创建和管理对话框的,包括模态和非模态对话框,以及自定义控件和对话框资源的使用。 "009俄罗斯方块"可能是一个实际项目,用于演示如何运用MFC和多线程技术开发游戏,这提供了实践应用所学...

    visual c++ 支持多线程文件上传文件的FTP客户端.zip

    此外,考虑到FTP协议本身,可能还需要处理如FTP被动模式(passive mode)以解决防火墙或NAT穿透问题。 总的来说,这个项目是一个使用Visual C++和多线程技术实现的FTP客户端,它可以并行上传多个文件,提高了文件...

    单例模式讲解说明与实例

    为了解决线程安全问题,可以使用 synchronize 关键字来同步getInstance() 方法,使其成为原子操作。但是,这样做会降低系统的性能。 另一个解决方案是使用双重检查锁定机制(Double-Checked Locking)来实现线程...

    C++ 多文件/多目录选择 选择框

    为了解决这个问题,首先需要在非调试模式下运行程序,确认问题是否依然存在。如果在独立的.exe文件中正常工作,那么问题很可能出在调试环境配置上。尝试逐步调试,查看具体哪一部分代码导致了问题,或者使用日志记录...

Global site tag (gtag.js) - Google Analytics