使用 C++ 的 Windows 上的异步对话框
Posted
技术标签:
【中文标题】使用 C++ 的 Windows 上的异步对话框【英文标题】:Assynchronous dialog box on Windows with C++ 【发布时间】:2013-02-20 11:03:50 【问题描述】:现在我正在开发一个实时软件,但我让自己实现了表单 - 使用 C++Builder 2007 - 用于确认消息(你知道,那些带有 OK 和 Cancel 的对话框,或者只有在出现错误时才 OK ),我读到 Windows MFC 上有一个 DialogBox 类。问题是调用会中断线程,直到在对话框上完成某些输入,我无法承受,因为应用程序上可能正在发生其他事情。
我已阅读有关无模式对话框的信息,但我不确定它是否是我需要的或如何实现。 Windows MFC 上是否有默认的异步对话框,如果有,我该如何调用它?
【问题讨论】:
你应该使用线程。 从不在 main-ui 线程上执行繁重的(cpu 密集型)工作。它是 windows 202(不完全是 101,但仍然很基本) 我应该使用线程来确认消息吗?所以我会在这个新线程而不是主线程上调用对话框,并在它关闭后返回值? msdn.microsoft.com/en-us/library/windows/desktop/… 你想像CWnd::MessageBox那样显示消息框 dccarmo:在 Windows 中,通常以相反的方式处理它:您的“工作”应该在线程上运行,Windows UI 和对话框应该在主线程。虽然任何一种方式都有效。如果您从线程运行 UI,则只需确保从辅助线程执行所有窗口创建、消息泵送等操作。 【参考方案1】:您不需要线程,您需要无模式对话框...它们最终成为同一调度线程上的窗口。
【讨论】:
基本上不是在堆栈上创建对象并使用DoModal()
,而是您new
对象然后自己执行Create
。以上是关于使用 C++ 的 Windows 上的异步对话框的主要内容,如果未能解决你的问题,请参考以下文章
C++ 中的哪个 Windows API 将帮助我识别当前 ComboBox 正在使用哪个对话框类?
未收到 C++ Windows 异步 IO 命名管道第一条消息