如何在VS2012中创建一个C++/CLI Winforms应用程序?

4

我刚刚安装了Visual Studio 2012 express for Desktop。但我找不到用C++创建GUI应用程序的地方!在Visual C++ 2010中,“Windows窗体应用程序”在哪里?这些拖放控件在哪里?我安装它是因为我得知它支持GUI智能感知(Visual C++: Unable to invoke method from another class)。


@chris::O :O ... 好的,但这在哪里? - PeakGen
我不确定GUI构建器,但它可能会与CLR项目硬编码一起工作。 - chris
这看起来很有前途。 (http://www.abouthack.com/articles/programming/c-plus-plus/windows-forms-application-in-visual-c-2012.html) - chris
2个回答

15
这是一个不太含蓄的提示,他们希望你停止创建C++/CLI Winforms应用程序。然而,至少对于VS2012和VS2013,基础设施仍然存在。但是在将来可能不会这样。
您可以按照以下步骤将CLR控制台应用程序转换为Winforms应用程序:
  • 从“文件+新建+项目”开始,选择CLR节点,CLR控制台应用程序
  • 选择“项目+添加新项”,UI节点,Windows表单
  • 选择“项目+属性”,链接器,系统,子系统= Windows
  • 选择“项目+属性”,链接器,高级选项,入口点= main

将预生成的.cpp文件更改为以下内容:

#include "stdafx.h"
#include "MyForm.h"

namespace ConsoleApplication45 {    // Change this!!
    using namespace System;
    using namespace System::Windows::Forms;

    [STAThread]
    int main(array<System::String ^> ^args)
    {
        Application::EnableVisualStyles();
        Application::SetCompatibleTextRenderingDefault(false); 
        Application::Run(gcnew MyForm());
        return 0;
    }
}

请注意,您需要将命名空间名称更改为您的项目名称。按F5键进行测试。一切都检查完成后,您可以像平常一样设计表单。
注意,Visual Studio 2015存在一个讨厌的静态初始化顺序错误(CRT),如果项目包含任何本机C++代码,则可能会导致应用程序在启动时立即崩溃,并出现AVE。这是一个未修复的错误,因此这些项目模板有点不可避免地会被移除。一种可能的解决方法是更改入口点(第4个项目)。
对于目标为x86的项目,请复制并粘贴此字符串:
?mainCRTStartupStrArray@@$$FYMHP$01AP$AAVString@System@@@Z

对于一个以 x64 为目标的项目,复制粘贴:

?mainCRTStartupStrArray@@$$FYMHP$01EAPE$AAVString@System@@@Z

在VS2017左右的版本中,设计师无法打开新表单并显示加密错误消息。解决方法是先构建项目,使用“生成”>“生成”。

谢谢回复。我打算放弃C++/CLI :( - PeakGen
1
@ Hans Passant 他们想让你创建Windows Store应用程序吗? - jax
@Hans Passant,我们能否获得更多关于此事的信息?如果微软正在逐步淘汰C ++,他们的替代方案是什么? - SullX
你应该问微软。他们对C++的唯一显而易见的意图是MFC和WinRT,绝大多数程序员使用类似C#或Javascript语言来创建GUI。 - Hans Passant

0

移除 #include "stdafx.h",这样在 VS 2022 中就可以正常工作了。由于从 VS 2012 开始移除了表单设计器支持,因此必须手动编写表单。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接