3

我刚刚为桌面安装了 Visual Studio 2012 express。我看不到任何用 C++ 创建 GUI 应用程序的地方!Visual C++ 2010 中曾经存在的“Windows 窗体应用程序”在哪里?这些拖放控件在哪里?我安装了这个,因为我有详细信息告诉它支持 GUI 智能感知(Visual C++:无法从另一个类调用方法

4

1 回答 1

14

他们希望您停止创建 C++/CLI Winforms 应用程序,这是一个不明显的暗示。然而,管道仍然存在,至少对于 VS2012 和 VS2013。未来可能不会出现这种情况。

您可以通过以下步骤将 CLR 控制台应用程序转换为 Winforms 应用程序:

  • 从文件 + 新建 + 项目、CLR 节点、CLR 控制台应用程序开始
  • 项目 + 添加新项目、UI 节点、Windows 窗体
  • 项目 + 属性、链接器、系统、子系统 = Windows
  • 项目 + 属性、链接器、高级、入口点 = 主

将预先生成的 .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 附近的某个地方,设计人员无法打开带有神秘错误消息的新表单。解决方法是先构建项目,使用 Build > Build。

于 2013-03-03T20:21:50.627 回答