c++ - 将 MFC gui 添加到 Win32 C++ 命令行应用程序的好方法是什么?

标签 c++ visual-studio-2008 user-interface mfc

我们有一个可以受益于 GUI 的命令行应用程序。我们想添加一些绘图功能,并确定了一个使用 MFC 的绘图库。最初我们开发了一个单独的应用程序,但我们更愿意在同一个进程空间中使用 GUI。

我在想可能是 MFC DLL 中的 GUI 可以托管在生产应用程序和测试应用程序中。

问题是:

  • 将 MFC GUI 添加到 win32 命令行应用程序需要哪些步骤
  • 是否可以在 MFC DLL 中制作 GUI,如何制作? (以便不同的应用程序可以重用相同的 GUI)

编辑

我应该补充一点,这是一个非托管应用程序(并且需要保持这种状态 - 它需要高性能,广泛使用模板、boost、自定义分配器、内部开发的线程序列化等)

结果:

Nick D 的回答非常有效 - especially the follow-up link in his comment with the details about a regular MFC DLL .

请注意,我们将在下一次迭代中使用 Qt。这次修改我们的构建环境并适应一个新的框架实在是太多了。

最佳答案

您可以在 dll 中调用/重用 GUI 代码。 (我什至在我的 C++ 项目中使用 Delphi 表单)

一个非常简单的dll例子:

// The DLL exports foo() function
void foo()
{
    AFX_MANAGE_STATE( AfxGetStaticModuleState() );

    CDlgFoo dlg;
    dlg.DoModal();
}

在控制台程序中,您将拥有如下代码:

h = ::LoadLibrary( "my.dll" );
::DisableThreadLibraryCalls( h ); 
pfoo = (foo_type*)::GetProcAddress( h, (const char*)1 );
if ( pfoo ) pfoo();

关于c++ - 将 MFC gui 添加到 Win32 C++ 命令行应用程序的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1936382/

相关文章:

C++ vector 和内存运行时错误问题

c++ - 将数组分配给派生对象

visual-studio-2008 - 减少了 SSRS BIDS 2008 R2 "Preview"选项卡中的打印功能或错误?

visual-studio - 安装项目未找到项目主要输出的依赖项

python-3.x - 如何在Python中检查线程是否结束

python - 使用Python将变量从一个类实例传递到另一个类实例?

C++ 元组链接问题 : undefined reference

c++ - 带有 float 的 2D 点的莫顿指数

visual-studio - Visual Studio 2010 RC 与 Visual Studio 2008 兼容吗?

Python tkinter Entry 小部件显示条形字符而不是换行符