【问题标题】:Container GUI for 3 different mfc applications用于 3 个不同 mfc 应用程序的容器 GUI
【发布时间】:2017-03-08 13:57:26
【问题描述】:

我目前有 3 个非常相似但略有不同的 mfc 应用程序,它们通常会在 Windows 环境中作为其工作流程和使用的一部分同时打开。我想将它们保留为 3 个独立的应用程序,但以某种方式将它们组合在一起,在一个 UI 容器下,为用户提供更清晰的信息。

到目前为止,我已经考虑使用命名管道将数据从两个应用程序发送到第三个应用程序,后者单独负责绘制 GUI(可能在最高 GUI 级别有 3 个不同的选项卡,每个应用程序一个)。我从 this 帖子的 SergeWautier 的回答中得到了这个想法。在研究了这样做的可能性之后,似乎有很多工作要实现这一目标。

还有其他(可能更简单)的方法来实现类似的目标吗?

【问题讨论】:

  • 您总是需要同时运行所有 3 个,还是每个都解决问题而不需要其他两个?
  • @franji1 他们都解决了问题,而不需要其他两个。但是,某种类型的用户很可能会使用全部 3 个;我的目标是改善这类用户的工作流程并整理他们的屏幕。
  • 我正在考虑将这三者集成到一个应用程序中的可能性,如果它们一直都需要彼此(例如,带 3 个视图的 MDI 或带有 2 个其他对话框的 SDI),但这不是用例,所以忘记这个想法。

标签: windows user-interface mfc window uiview-hierarchy


【解决方案1】:

旧答案

与此同时,我遇到了TaskSpace 工具,这是我正在寻找的最接近的东西。它是 liteware 并获得全部功能(例如,保存我最感兴趣的特定选项卡配置)需要购买许可证。真正酷的是限制用户添加除 3 个应用程序之外的任何其他窗口,并更好地控制选项卡和顶级窗口的标题。此时,编写一个与 TaskSpace 类似的工具将是理想的解决方案。

我也一直在玩tidytabs。这不完全是我想要的,因为它不提供“包装 GUI”,但我认为这里值得一提,以防它帮助其他人。

更新

我在Window Tabifier 中找到了我想要的东西,它是开源的,我可以根据提供的CPOL Licence 进行修改以满足我的需要。代码也写得很好。

【讨论】:

  • Code Project 出版物没有提到的是,它通常不起作用。详情请见Is it legal to have a cross-process parent/child or owner/owned window relationship?。
  • @IInspectable 谢谢你的链接!这是一本有趣的读物,但我仍然不确定它是否“不能正常工作”。它解决了一个现实世界的问题,对我来说效果很好。也许我的知识不足以理解这个论点......
  • 构建一个跨线程的窗口层次结构意味着调用AttachThreadInput(系统在你背后做的),这会导致各种错综复杂的事情。以AttachThreadInput is like taking two threads and pooling their money into a joint bank account, where both parties need to be present in order to withdraw any money 为例。
  • @IInspectable 这现在更有意义了,但为了保持类比,我不只是向随机的人要钱......我知道将进行交易的人,我'我介绍了一个给另一个。我还将这个计划保留在“内部”(我只是将我的应用程序标签化,没有别的)。也许我仍然太无知,看不出我错了,但是直到我撞到砖墙并且事情变得混乱,尽管我可能很愚蠢,我还是会继续这样做。不过还是非常感谢资源!如果我发现我的方式有错误,我会在这里留言。
  • 您正在使用 MFC。这意味着您已经放弃了对消息循环的控制。 MFC 没有承诺其消息循环实现是否可以支持跨线程窗口层次结构,而不会导致死锁。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
相关资源
最近更新 更多