2014.11. 1.
石立 喬

Visual Studio Express 2013の新しい使い方(6)

――― Windowsフォームアプリケーションを始める―――

 Visual Studio Express 2013には、Visual C++に、Windowsフォームアプリケーションのテンプレートがなくなった(BasicとC#にはある)。これは、2012 Express以来同様であった。このため、従来使用していたWindowsフォームアプリケーションは、作成に、すこし手間がかかるようになった。コード作成は、IntelliSense(入力候補の表示、メソッドの引数の並びと型の表示など)が軽快に作動するので、コード入力が早くなり、ミスを防止できる。
 ここでは、Visual Studio Express 2013 for Windows Desktopを使って、Visual C++でwindowsフォームアプリケーションを始める方法のみを説明する。そこから先は、Vusual C++ 2010 Express以前のIDEでの解説が、ほぼそのまま使用できるので、そちらを参照されたい。
Windowsフォームプアプリケーションの始め方
 Windowsフォームプログラムの主要部は、「MyForm.h」と言うヘッダ−ファイルに記述する。これは、従来「Form1.h」と呼ばれたものである。他に、プログラムを起動するための「<プロジェクト名など>.cpp」が必要で、main関数を記述する。
 Vusual C++ 2010 Express以前のIDEでは、これらがテンプレートによって自動的に生成され、Windowsフォームアプリケーションの作成が容易であった。しかし、Visual Studio Express 2013を、Visual C++で使用する場合、Windowsフォームアプリケーションのテンプレートが存在しないので、(1) 「空のCRLプロジェクト」を作成し、(2)そこに 「Windowsフォーム」を追加し、(3) そこで用意される、空の「MyForm.cpp」を「<プロジェクト名>.cpp」に書き換え、(4) そこにmain関数を記述する、などの手順を必要とする。

プロジェクトの新規作成とフォームの準備
1)デスクトップから、「Visual Studio」のアイコンをダブルクリックする。
2)「スタートページ」ウインドウで、左側にある「新しいプロジェクト」をクリックする。
3)図1に示す「新しいプロジェクト」ウインドウが開くので、左の欄の「Visual C++」の下の「CLR」を選択し、右の欄で、「空のCLRプロジェクト」を選択する。
4)下方の「名前」、「場所」、「ソリューション名」欄を確認または変更し(従来、Windowsフォームアプリケーション用テンプレートが使えた場合には、名前がWindowsFormsApplication1などとなっていたが、単にProject1となっている。この、自動的に入力されているもので良ければそのままにする。「ソリューション名」は、「名前」と同じになる。)、その他はデフォルトのままにして、「OK」をクリックする。
 図1は、選択と確認が終わって、「OK」をクリックする直前の「新しいプロジェクト」ウインドウを示す。


図1 選択と入力を終わった「新しいプロジェクト」ウインドウ


5)空のCLRプロジェクトウインドウが開く(空なので何もない)。
6)右側のソリューションエクスプローラ(図2参照)で、Project1(プロジェクト名)を右クリックし、「追加」→「新しい項目」をクリックする。


図2 右側にあるソリューションエクスプローラ


7)すると、図3に示すような「新しい項目の追加 - Project1」ウインドウが開くので、左欄で「Visual C++」→「UI」(ユーザインターフェイス)を選択し、右欄で「Windowsフォーム」を選択して、「追加」をクリックする。「名前」は、MyForm.hとなっていて、従来のForm1.hに相当する。


図3 次に現れる「新しい項目の追加」ウインドウ


8)「MyForm.h」ができ、フォームデザイナに、スケルトン状態のWindowsフォームが表示される(図4参照)。


図4 フォームがフォームデザイナ画面上に表示される


エントリーポイントの作成
 エントリーポイントとは、プログラムを起動したときに、最初に実行するプログラムであり、具体的にはmain()関数のことである。
1) 「ソリューションエクスプローラ」で、「ソースファイル」を展開して、「MyForm.cpp」を表示する。
2) 「MyForm.cpp」を右クリックし、「名前の変更」を選択して、「Project1.cpp」(一例、プロジェクト名に合わせる)に書き換える。
3)ソリューションエクスプローラーで、「Project1」を選択した状態で、メニューから、「プロジェクト」→「プロパティ」をクリックする。
4) 図5に示す「Project1プロパティページ」が開くので、左の欄で、「構成プロパティ」→「リンカー」→「システム」と選択し、右の欄で、「サブシステム」を選択し、右端に現れる「V」をクリックして、現れたリストから「Windows(/SUBSYSTEM:WINDOW)」を選択して、右下の「適用」をクリックする。図5は、「適用」ボタンをクリックする直前の「Project1プロパティページ」である。


図5 サブシステムを設定する


5)次に、左欄の「構成プロパティ」→「リンカー」→「詳細設定」を選択し、右欄の「エントリポイント」に、「main」と入力して、「OK」をクリックする。


図6 エントリーポイントとしてmainを指定する


6)「ソリューションエクスプローラ」で、「Project1..cpp」をダブルクリックすると、「コードエディタ」部に、「#include "MyForm.h"」だけのスケルトンが表示されるので、図7のように、プログラムを追加する。「STA」は、Single Thread Apartment のことで、一個のスレッドからのメソッドしか実行しないことを意味し、WindowsアプリケーションはSTAにしておく必要がある。「STA」まで入力すると、「STAThreadAttribute」がIntelliSenseによってアドバイスされるので、それをダブルクリックして入力する。


図7 「Project1.cpp」に、エントリーポイントとしてのmain()を記述する


プログラムをビルドし、実行させてみる
 ここまでの段階で、誤りなく、プログラムが作成されていることを確認する。
1)メニューから、「ビルド」→「ソリューションのビルド」を選択する。
2)正常であれば、「出力」欄に、「1 正常終了」と表示される。
3)「デバッグ」→「デバッグなしで開始」を選択する。
4)図8に示す空のWindowsフォームが表示される。


図8 プログラムの実行結果


コードの記述
 「MyForm.h[デザイン]」画面で、フォームの中央付近で右クリックし、「コードの表示」をクリックすると、MyForm.hがコードエディタに表示される。図9は、MyForm.hの上方の一部を示したもので、この下にコードを記述する。


図9 自動的に生成されているMyForm.hのスケルトン


 これ以降の操作やプログラムの作成については、従来のバージョンでの説明が使用できるので、そちらを参照されたい。