[英]How to add MFC application project to Win32 application project in Visual C++ 2008
[英]What is a good way to add MFC gui to a Win32 C++ command line application?
我们有一个可以从GUI中受益的命令行应用程序。 我们要添加一些绘图功能,并确定了使用MFC的绘图库。 最初,我们开发了一个单独的应用程序,但是我们宁愿在相同的处理空间中使用GUI。
我正在考虑可能在生产应用程序和测试应用程序中托管的MFC DLL中的GUI。
问题是:
编辑
我应该补充一点,这是一个不受管的应用程序(需要保持这种状态-它需要高性能,广泛使用模板,boost,自定义分配器,内部开发的线程序列化等)
结果:
Nick D的答案非常有用- 特别是在评论中的后续链接中,其中包含有关常规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();
首先,您必须放弃WinMain()。
如果仍要保留命令行参数功能,请在App类的InitInstance()中处理命令参数。
直接的方法是在程序中添加一个开关,并给定一定的值,它将启动gui,否则使用命令行选项。 类似于“ app.exe -mode = gui”。 如果在程序启动时没有看到此命令arg,请回退到旧的命令行行为。
关于DLL,您可以在DLL中编写所有UI功能,并从运行消息循环和WinMain的“生产应用程序”中使用它。 但是有什么意义呢? 如果是出于测试目的,那么为什么不将演示文稿与逻辑分开并将其单独进行测试。 无论如何,您打算如何在测试应用程序中测试UI? 模拟按钮点击?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.