代码之家  ›  专栏  ›  技术社区  ›  Security Hound

非阻塞消息框和dllimport缺点

  •  0
  • Security Hound  · 技术社区  · 15 年前

    我目前是一个开发人员,正在开发一个非常特定于任务的应用程序;用户通常是多任务的,因此他们经常会在输入数据时出错。任务的性质使得通知他们那些归责错误很重要。我们目前使用面板和标签以及/或者应用程序底部的小标签的组合来通知他们发生了什么事情。在不久的将来,我们的任务是更新应用程序的接口。

    最近在查找一个无关问题时,我遇到了以下问题: click here for link 这个答案引起了我的注意,并且将所有者的句柄设置为零(空)确实按照作者的要求做了。

    因为我最近才开始在C中导入和使用非托管代码,所以我想知道使用此方法是否会有任何副作用。我当然意识到用户可能会导致应用程序打开大量的消息框。我过去曾试图使用线程安全消息框,但发现我们的应用程序的要求始终处于顶层是一个问题(消息框的位置被应用程序隐藏)。

    我能够根据需求对代码进行测试,它似乎与我发现的方法有类似的问题,但似乎我们可以解决这些问题。我确实想到了一些可以做的事情,我真的需要弄清楚如何确定消息框在屏幕上的显示位置。

    为了解决Jim的问题,我们必须了解正在运行的应用程序正在不断地处理数据。因此,当前任何锁定主线程的操作都可能导致处理此数据时出现问题,这是任务关键的。我们使用标签来解决这个问题,但是在我们未来的任务中,我正在寻找一种更为简化的方法来呈现这些错误消息。主要问题是解决方案也不能增加应用程序的开销。一些额外的tid位信息是系统在一个封闭的网络上使用。

    我想简短的问题是,使用这种特殊的方法是否会有负面影响,在C中显示一个非阻塞的消息框?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Jim Mischel    15 年前

    没有什么特别的 技术的 通过将窗口句柄设置为空来显示模式消息框时出现问题。我怀疑它作为用户界面错误消息指示的使用,因为它不会阻止用户在遇到错误时继续使用。

    模态消息框,它使用户点击OK,然后纠正错误,使用户界面非常笨拙。但一个可能隐藏的弹出窗口,让用户继续前进,也同样糟糕。有更好的解决方案,其中一些方案显示在Windows窗体的验证示例中(可能还有WPF)。