VC++フォームこそ、コマンドプロンプトでEXE?

|

DLL作成の序に、VC++フォームでも表示させてみようかと試してみましたが、改めてC++の複雑怪奇さを感じました。(VC++は約束事が多過ぎ)

柔軟性とか、汎用性とか、言葉巧みに誤魔化されちゃったっていう感じが・・・。ずぼらのめんどくさがり屋には、度を越した冗長性とか、オタッキーな適応性とか、それこそ意味不明瞭だし。

それはさて置き。

当然、IDEは難し過ぎるので、DOS窓(コマンドプロンプト)にcl入れてコンパイル!

試しに、VC++フォームを呼び出すだけのサンプルを作ってみました。

ただ、デザイナの利用は有りですね。

一寸凝りたければ、部品(コントロール)の配置も複雑になり、扱う部品数も多くなります。そんな時、グラフィカルに部品配置が出来るデザイナは優れものです。

手打ちは、画面サンプルや動作確認用(プレゼン?)などであればプログラムが小さくて済む分、読み易くなるには違いないけど、UIの作り込みは儘なりません!

<注意点>

・現状のclコマンドラインでは、エクスプローラから起動するとDOS窓が立ち上がった後に、VC++フォームが立ち上がります(つまり、コンソールアプリケーションであるらしい。Windows アプリケーションではない)。


お試し環境
  WindowsXP 32bit Edition
  Visual C++ 2008


/*---- VC++ Form 作成 ----------------- コマンドライン --------------------*/

D:\vc2008\dllchk>cl /clr testpp.cpp

/*----------------------------------------------------------------------------*/


/*---- testpp.cpp -------------------- お試しソース ------------------------*/

#using <system.dll>
#using <system.drawing.dll>
#using <system.windows.forms.dll>

using namespace System::Windows::Forms;

void main()
{
    Form ^form1 = gcnew Form;
    form1->Location = System::Drawing::Point(100, 100);
    form1->Size = System::Drawing::Size(400, 200);
    form1->StartPosition = FormStartPosition::Manual;
    form1->Name = "form1";
    form1->Text = "画面構成サンプル";

    Button ^button1 = gcnew Button;
    button1->Location = System::Drawing::Point(150, 100);
    button1->Size = System::Drawing::Size(100, 40);
    button1->Name = "button1";
    button1->Font = gcnew System::Drawing::Font("MS UI Gothic", 16);
    button1->Text = "ボタン";
    form1->Controls->Add(button1);

    Label ^label1 = gcnew Label;
    label1->Location = System::Drawing::Point(100, 30);
    label1->Size = System::Drawing::Size(240, 40);
    label1->Name = "label1";
    label1->Font = gcnew System::Drawing::Font("MS 明朝", 24);
    label1->Text = "エラーが来たぁ";
    form1->Controls->Add(label1);

    System::Windows::Forms::Application::Run(form1);
}

/*----------------------------------------------------------------------------*/