如何显示非模式对话框并立即在其中显示信息?

2024-03-12

我想在屏幕上显示一个无模式对话框并在其中显示一些信息。

但是,如果我按照以下方式使用它,则会出现一些问题:

function()
{
showdialog(XXX).
//heavy work.
update the dialog..
//heavy work.
update the dialog...
}

似乎显示了对话框,但它没有在其中绘制任何信息。它仅在函数结束时绘制所有信息。

如何修改非模式对话框以便它立即显示信息?


您可以做一些事情。

(1)你可以post对话框中的一条消息CDialog::OnInitDialog方法,然后在该发布消息的消息处理程序中处理长函数。这样,对话框将首先显示,然后长函数将运行。

(2)第二个选项是确保消息循环获得一些处理时间。因此,如果您的长函数是某种循环,只需添加偶尔的调用处理消息确保消息队列保持为空:

void ProcessMessages()
{
    MSG msg;
    CWinApp* pApp = AfxGetApp();
    while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
    {
        pApp->PumpMessage();
    }
}

Edit:在这种情况下当然可以使用线程,但这样做并不总是没有风险和复杂性。

使用带有 a 的线程GUI意味着必须处理多个消息队列,这意味着使用 API 之类的帖子主题消息这带来了一系列需要警惕的新问题。

有关此类问题的示例,请参阅此链接:

http://msdn.microsoft.com/en-us/library/ms644946(VS.85).aspx http://msdn.microsoft.com/en-us/library/ms644946(VS.85).aspx

哪里说:

PostThreadMessage 发送的消息是 不与窗口关联。作为一个 一般规则,不属于的消息 不能与窗口关联 由 DispatchMessage 调度 功能。因此,如果收件人 线程处于模态循环中(如 消息框或对话框), 消息将会丢失。拦截 在模态中线程消息 循环,使用特定于线程的钩子。

我在中使用流程消息方法Zeus IDE http://www.zeusedit.com它可以很好地确保 GUI 保持对用户的响应。它还具有非常容易实现的优点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何显示非模式对话框并立即在其中显示信息? 的相关文章

  • Android 4.1.2 对话框被调用两次

    当我调用显示对话框时 我的应用程序遇到了这个问题 不知何故它被调用了两次 这只发生在 android 4 1 及以上版本 较低版本工作正常 所以我不认为这是任何代码问题 您以前听说过 遇到过这个问题吗 这里是代码 Button edit B
  • 静态函数中不可访问非静态成员

    我定义了一个函数 HRESULT AMEPreviewHandler CreateHtmlPreview ULONG CbRead const int Size 115000 char Buffer Size 1 HRESULT hr m
  • 自定义样式的 AlertDialog 的样式属性

    我正在尝试设计我的 AlertDialog 的样式 并且我已经能够通过样式和 xml 声明更改其中的大部分内容 但仍然存在一些问题 如何将标题栏周围的区域从黑色更改为我的自定义颜色 如何将外部背景更改为透明 阴影落在蓝色的外部部分 如何更改
  • Qt 颜色选择器小部件?

    我有一个QDialog向用户提供一些选项供其选择的子类 这些选项之一是颜色 我见过QColorDialog https stackoverflow com a 1972272 2062384 我需要一些更简单的东西 这也是一个常规小部件 这
  • Delphi 在保存对话框中覆盖现有文件

    我正在使用 TSaveDialog 组件通过单击按钮来保存文件 但是 我在保存现有文件名时遇到问题 通常 当您想要在 Windows 中保存现有文件时 会弹出一个消息框 询问您是否确实要覆盖该文件 TSaveDialog 组件的情况并非如此
  • 创建非托管常规 MFC DLL 并从托管 C++ .NET 应用程序调用它时出现问题

    我有几个关于 DLL 的问题 我尝试了很多 但无法获得完整的图片 大多数示例都是用 C 等编写的 使用 VS2005 中的向导 我创建了一个非托管 MFC 常规 DLL 由于剩余代码 必须是 MFC 然后我尝试将其导入 VS2005 管理的
  • 如何发光最小。最大和关闭按钮?

    我按照以下指南使用 DWM API 创建自定义 Aero 框架 My work void CMainFrame OnActivate UINT nState CWnd pWndOther BOOL bMinimized CFrameWnd
  • 基于 C# .NET 文档的应用程序操作图

    我想开发一个新的应用程序 用户可以在其中创建描述流程的图表 我认为在这种情况下 基于文档的应用程序是我唯一的选择 我熟悉C net C MFC 和J2EE 根据您的经验 实现这一目标的最佳方法是什么 我应该关注哪个平台 图表必须由方框和箭头
  • MFC 是否提供了将文本放入剪贴板的快速方法?

    我们的代码库中的添加到剪贴板代码非常低级 分配全局内存等等 对于简单的情况 我只想将一些纯文本放在剪贴板上 是否有任何例程可以包装所有这些内容 一个例子是 CRichEditCtrl 具有 Copy 和 Cut 方法 可以自动将当前选择放入
  • 如何停止对辅助隐式加载 DLL 的 DLL 劫持

    例如 COMDLG32 DLL 隐式链接到以下系统 DLL 以及其他 xmllite dll dll srvcli dll wkscli dll 链接信息库 netutils dll 微星 dll 由于这些是由操作系统隐式加载的 而不是使用
  • 如何将基数词转换为序数词

    有没有一种简单的方法可以将数字 1 2 3 转换为 1st 2nd 3rd 并且以这种方式我可以为该函数提供一种语言并具有它会返回我目标语言的正确形式吗 标准 C stl 或 boost 都可以 MFC 或 ATL win32 api 或我
  • 实现批量记录获取

    在程序开始时 我需要将数据从 MS Access 数据库 mdb 读取到下拉控件中 这样做是为了每当用户在该控件中键入内容时 应用程序都可以自动完成 不管怎样 从数据库中读取数据花了很长时间 所以我想我应该实现批量行获取 这是我的代码 CS
  • 获取正在运行的程序的属性

    我想开发一个程序 其 ID 是一张牌 因为它在另一个正在运行的程序 例如扑克或红心游戏或其他程序 中播放 我首先尝试获取有关已运行的游戏程序的所需信息 但我从一开始就遇到了问题 我正在运行 MSVC 2013 并开发 MFC 应用程序 现在
  • MinGW支持MFC吗?

    我已经使用 MinGW 开发了 WinAPI 应用程序 没有出现任何问题 现在 我可以用 MFC 做同样的事情吗 我只是在这里猜测 但我认为您需要购买 Visual Studio 的副本才能获得使用 MFC 的许可证 MFC 也不因其对 C
  • 创建无模式消息框

    如何创建一个无模式消息框 我是否必须创建自己的 Windows 窗体类并使用它 如果是这样 是否有一种简单的方法来添加警告图标 而不是插入我自己的图像 并根据文本量调整大小 如果您需要一个在代码继续在后台运行时自动显示的消息框 该框仍然是模
  • 使对话框/活动始终位于顶部

    如何将对话框 活动保持在其他活动之上 无论用户是否在活动之间切换 它都应该始终处于活动状态 您可以使用相对布局作为父级 通过使用相对布局 您可以重叠其他布局 所以 你必须使用相对布局的两个子布局 在一个孩子中 您将弹出窗口 而在另一种布局中
  • 旋转设备后 Android 对话框重新打开

    我正在编写一个非常简单的应用程序来打开我的自定义共享对话框 XML 布局仅包含 1 个按钮
  • 错误 C2248: 'CObject::CObject' : 无法访问类 'CObject' afxwin.h 中声明的私有成员

    我试图让班级负责在灰色背景上放置一些文本 Score h pragma once class Score public Score Score void UpdateScore int points void UpdateLives int
  • 如何在对话框中配置自定义按钮?

    这里我有一个自定义对话框 里面有背景 2 ImageButton 问题是 当我尝试为该按钮设置 onclick 侦听器时 程序将返回 NullPointerException 我不知道为什么会发生这种情况 无论如何如何将操作分配给对话框内的
  • 发送WM_SETTEXT时如何避免EN_CHANGE通知?

    我有一个 CEdit 派生控件 当基本数据为空时 该控件显示字符串 N A 我最近添加了代码 以在控件获得焦点时清空控件 SetWindowText 并在用户离开焦点时将其设置回 N A SetWindowText N A 控空 唯一的问题

随机推荐

  • 如果图像是背景,TabControl 会闪烁

    我注意到 如果我在具有图像背景的面板中有一个 TabControl 当鼠标悬停在选项卡上时 它会闪烁并重绘 有没有解决方法可以防止这种情况发生 我看到了 发生这种情况是因为 TabControl 通过要求父控件在其自己的窗口内绘制自身来部分
  • Swift - 如果小数等于 0,如何从浮点数中删除小数?

    我显示的距离为一位小数 如果它等于 0 例如 1200 0Km 我想删除该小数 我该如何快速做到这一点 我这样显示这个数字 let distanceFloat Float currentUser distance as NSString f
  • Google Chrome 的 Javascript 控制台键盘快捷键

    我想使用调试我的 javascript 应用程序谷歌浏览器3的开发者工具 一切都很好 直到我真正想开始调试 我可以设置断点等 但我不想使用鼠标而是使用键盘进行调试 In Firefox Firebug I can use F10 F11 a
  • HttpClient.GetAsync 在具有锁屏访问以及 TimeTrigger 或 MaintenanceTrigger 的后台任务中失败

    在 Windows 8 Metro 应用程序的后台任务中运行时 Client GetAsync 对我来说似乎失败 我尝试同时使用 TimeTrigger 和 MaintenanceTrigger 看来也不例外 调试它时 它只是在该行退出 如
  • 具有多个选项的警报

    只是想知道 是否可以创建具有多个选项的警报 例如 在 Facebook 中 当您在未完成输入消息的情况下尝试关闭选项卡 窗口时 会弹出一条带有 离开此页面 和 留在此页面 选项的警报 以表单为例 您正在寻找 window onbeforeu
  • 在机器人框架中连接两个字符串的最简单方法。?

    给定两个字符串 a b 连接它们并分配给机器人框架中的新变量的最简单方法是什么 我尝试了这种简单的Pythonic方式 但它不起作用 var a b 您可以使用Catenate http robotframework org robotfr
  • 适用于 iPhone 的 Google Talk API

    有谁知道如何使用 GData API 连接到 Google Talk 是否有更好的 iphone 开发 API 用于连接 Google Talk 我一直在查看为 API 下载的示例 但没有看到任何支持 This http code goog
  • 用于演示的 R 演示 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 计算 3D 平面的 Voronoi 图

    是否有代码 库可以计算 3D 平面 平行四边形 的 Voronoi 图 我检查了 Qhull 它似乎只能处理点 在它的示例中 Voro 可以处理不同大小的球体 但我找不到任何多边形 在这张图片中 3d 中的样本平面 https i stac
  • Ruby 无法解析 CSV 文件:CSV::MalformedCSVError(第 1 行中的非法引用。)

    Ubuntu 12 04 LTS Ruby ruby 1 9 3dev 2011 09 23 修订版 33323 i686 linux 轨道 3 2 9 以下是我收到的 CSV 文件的内容 date time settlement id t
  • oAuth 和 Codeigniter 与 MongoDB

    我正在使用 Alex Bilbie 制作的 Codeigniter 的 oAuth 库 它是为 MySQL 设计的 有人用过 MongoDB 吗 我将尝试将其 转换 为 MongoDB 但存储库中有很多文件 服务器设置只需要其中很少的文件
  • 从不平衡二叉树中随机选择一个节点

    我的一位朋友遇到了以下面试问题 我们都不太确定正确答案是什么 有谁知道如何解决这个问题 给定一个不平衡二叉树 描述一种随机选择节点的算法 使得每个节点被选择的概率相等 您只需遍历树一次即可完成此操作 该算法与列表相同 当您看到树中的第一个项
  • 您可以使用 POST 而不是 GET 进行 struts2 操作重定向吗?

  • MySQLDataReader在c#中检索Null值问题

    我目前正在开发一个 C 项目 该项目将导出 MySQL 数据 导出适用于服务器内的任何数据库 因此我不会知道表中的字段和数据类型 也不会知道表中的字段是否允许空值 在测试过程中 我发现导出工作正常 但如果字段允许 null 则当 mysql
  • 康威与 Python 的生命游戏

    我喜欢上了 Conway 的 生命游戏 并开始尝试用 Python 编写它 目前我还没有为程序的边界编写任何代码 所以我只是就我现在拥有的东西寻求帮助 我在初始化 闪烁器 阵型时似乎遇到了麻烦 它没有像应有的那样振荡 而是似乎将自己变成了立
  • 使用 buildozer 打包 kivy 应用程序时如何修复“java.lang.module.FindException:未找到模块 java.se.ee”错误

    我正在尝试打包我的 kivy 应用程序 python3 但是当我运行命令时buildozer v android debug看到这个错误 Cwd home javier buildozer android platform android
  • client-go:将 kubernetes json 文件解析为 k8s 结构

    我想解析 kubernetes 清单文件 json yaml 并能够将它们转换为 k8s 结构 以便稍后操作它们 我知道有 NewYAMLOrJSONDecoder Decode 函数 https github com kubernetes
  • C# 中的正确柯里化

    给定一个方法DoSomething它接受一个 无参数 函数并以某种方式处理它 有没有比下面的代码片段更好的方法来为带有参数的函数创建 重载 public static TResult DoSomething
  • VB.NET 中的隐式转换

    这个问题是针对懒惰的 VB 程序员的 请 在 vb 中我可以做到并且不会出现任何错误 实施例1 Dim x As String 5 Dim y As Integer 5 Dim b As Boolean True 实施例2 Dim a As
  • 如何显示非模式对话框并立即在其中显示信息?

    我想在屏幕上显示一个无模式对话框并在其中显示一些信息 但是 如果我按照以下方式使用它 则会出现一些问题 function showdialog XXX heavy work update the dialog heavy work upda