VC++でWindowsフォームアプリ

VC++Windowsフォームアプリを作る方法メモ。

すでにオワコンだが

昔はVC++にもWindowsフォームアプリを作るテンプレートがあってちゃんとサポートされていたけど、今はテンプレートもなくなってる。もうとっくにオワコンである。そもそも、わざわざVC++で.NETアプリ作りたいニーズは少ないだろう。でもCのコードにちょっとUIがほしいときに便利ではある。さすがにWin32 APIで書くのは面倒くさいし。

手順メモ

※ いまだにVisual Studio 2013使ってるので最新の環境では違うかも。

  • [ファイル] > [新規作成] > [プロジェクト] で、[Visual C++] の [CLR] の [空のCLRプロジェクト] を選択。ここではプロジェクト名を CppWinForm としたとする。
  • [プロジェクト] > [新しい項目の追加] で、[UI] の [Windowsフォーム] を選択。ここではファイル名を MyForm.h としたとする。
  • MyForm.cppにコードを追加
#include "MyForm.h"
 
using namespace CppWinForm; // プロジェクト名に合わせる
 
[STAThreadAttribute]
int main() // エントリポイントの関数
{
    MyForm ^fm = gcnew MyForm();
    fm->ShowDialog();
    return 0;
}
  • [プロジェクト] -[CppWinForm のプロパティ] で、[構成プロパティ] の [リンカー] の [システム] の [サブシステム] を Windows(/SUBSYSTEM:WINDOWS) に設定。
  • 同じく [構成プロパティ] の [リンカー] の [詳細設定] の [エントリポイント] に上記のエントリポイントの関数名 main を記入。
  • あとはC#でフォームアプリを作る要領で。
    // button1 と textBox1 をフォームに貼る。
    // textBox1を叩くと、 MyForm1.h にハンドラができる。
    // textBox1 と メッセージボックスに文字列を表示するコードを書く。
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
        textBox1->Text = "HOGE!";
        MessageBox::Show("PIYO!");
    }

注意点

もうオワコンなので、サポートがぞんざいである。C#と比べてなんか挙動がおかしい。