将 MainApp 从 MFC 应用程序转换为辅助对话框

Posted

技术标签:

【中文标题】将 MainApp 从 MFC 应用程序转换为辅助对话框【英文标题】:Convert MainApp from an MFC application into a secondary dialog 【发布时间】:2016-05-05 11:58:59 【问题描述】:

各位程序员,您好,我再次向您询问使用 MFC 应用程序做某事的快速方法。

我有两个 MFC 应用程序,我希望一个在单独的线程中启动另一个,因此我可以通过执行单个 exe 文件来运行这两个服务。

我实际上是 MFC 的新手,所以我实际上不知道我有什么选择。尝试了一些肮脏的事情,但我一直遇到重复资源问题,更不用说两个应用程序都以 BOOL CMainApp::InitInstance() 开头,我猜没有办法有两个初始化实例。

话虽如此,是否有任何快速的方法可以将其中一个应用程序重写为辅助对话框而不会引起太多麻烦?

提前谢谢你,如果我问一些奇怪或简单的问题,请原谅。

【问题讨论】:

【参考方案1】:

这取决于它们是什么类型的 MFC 应用程序? MDI、SDI、基于对话框?

这里有一些选项:

    如果辅助应用是基于对话框的,则转换非常简单:您需要将该对话框的实现文件移动到第一个应用中并合并资源。 如果两个应用程序都是 MDI - 您可以合并它们的文档模板,以便第一个应用程序能够对所有文档/视图类型进行操作。 否则 - 您是否考虑过通过 CreateProcess() 简单地生成第二个应用程序?从“单个exe文件”运行它们有什么意义?

【讨论】:

感谢 Vlad Feinstein 的回复,我想它是基于对话的。我尝试移动实现文件以及资源,但我不断遇到重复资源问题。并且这两个应用程序都是以 initInstance 启动的,我认为它实际上并不知道哪个应用程序作为主应用程序启动。我将把它放在一边,因为我仍然需要在主应用程序中进行许多编码,一旦我有一个功能齐全的代码,我就会尝试它。另一方面, CreateProcess() 是如何工作的?我猜它从应用程序中启动一个单独的可执行文件?再次感谢您。 好吧,我已经完成了代码,我已经实现了 CreateProcess() 调用,它真的像一个魅力!非常感谢弗拉德的提示。

以上是关于将 MainApp 从 MFC 应用程序转换为辅助对话框的主要内容,如果未能解决你的问题,请参考以下文章

将 MFC 类转换为 C++ 标准库

MFC Feature Pack 应用程序在辅助监视器中恢复为最大化时大小错误

在 MFC C++ 中将 char 数组转换为 UNICODE

MFC:无法将 std::string 转换为 LPWSTR 放入函数 [重复]

如何从 MFC 的 COleDateTime 转换为 C# DateTime?

CArchive (MFC) 到 JSON?