3

デスクトップ用のVisualStudio2012Expressをインストールしました。C ++でGUIアプリケーションを作成する場所が見つかりません!この「Windowsフォームアプリケーション」は、Visual C ++ 2010のどこに存在していましたか?これらのドラッグアンドドロップコントロールはどこにありますか?これをインストールしたのは、これが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 のどこかで、デザイナーが不可解なエラー メッセージで新しいフォームを開くことができません。回避策として、最初にプロジェクトをビルドし、[ビルド] > [ビルド] を使用します。

于 2013-03-03T20:21:50.627 に答える