第一話 Win32と変わらんけど、まずはソリューション作ってリソースも構築してみまひょ

ソリューションを作ろう

では早速ソリューション(プロジェクトを管理する親玉)を作りましょう。VSを立ち上げて下さいな。
[ファイル]→[新規作成]→[プロジェクト]でこんなダイアログ出てるはずです。画面は2008ですがデフォルトをC#VB.NETにしたとかは勘弁してね。

001
赤枠部を選択して場所を設定後、プロジェクト名を入れてOKボタンをクリックして下さい。ここら辺はWin32もMFCもたいして変わりません。
するとこういうダイアログが表示されるはずですので表示されたら赤枠を選択して完了ボタンですが、味気ないのでちょっとだけ説明します。
002
  • アプリケーションの種類。
    1. ダイアログベース
      ダイアログのみのプログラムです、VBで作るアプリが近いかな?ドキュメントクラスが無いのが意外に足かせになる、今回はそこまで踏み込まないで作るけど。
    2. シングルドキュメント(SDI)
      フレームダイアログ(メインフレーム)の中にメインフレームクラスと表示やWindows的な事を司るViewクラスとメモリを管理するDocumentクラスが対である形式。メモ帳やワードパッド辺りがそれだった気がする。(ソース見てないんで断言出来ず)ユーザインタフェーススレッドが使えるのでゲームを作るのにもさりげなく向いていたりする。
    3. マルチドキュメント(MDI)
      SDIのViewとDocumentが複数存在する形式。EXCELやフォトショップなんかが代表例ね。逆に言えば同じ形式の複数ドキュメントを参照しない限り使わない形式ではありますな。使いこなすと色々便利。
  • リソース言語
    UNICODEの選択を外しましたが、これはマルチバイトにしたいがため。MFCではマルチバイトとUNICODEは簡単に混在出来るので判りやすいマルチバイトにしてみました。この辺りはどちらを多く使うかで決めて下さいとしか言いようがありません。
    (注1)極力MFC的にやるつもりなのでANSIなメソッドは避けていく予定
    (注2)連携無しでゼロから作る場合2018年現在はUNICODEで開発するほうが良いと思います
  • MFCの使用法
    MFCはDLLLIBを選択出来るのですが、共有DLLはバージョン違いで色々あるため、組み込みとしました。おそらく仲間内でデータ作成したりするだろうし。(理解せずファイルが小さくなるからとMFCを共有DLLにしてしまいVSのバージョン違いで「ビルドが通らない、動かない」と開発現場が混乱するケースがままあるのである)

以上でソリューションのスケルトンが出来ました。

リソースをいじろう

取りあえず[ビルド]→[ソリューションのリビルド]の後、デバッグ開始で起動してみましょう。ダイアログが出ましたね。(画像はすでにリソース弄ってます)
003
まずは[表示]→[リソース]リソースタブに追加後、リソースタブを開き、[プロジェクト名.RC]→[Dialog]→[IDC_プロジェクト名_DIALOG]をダブルクリックし、ダイアログリソースを表示して下さい。
004
表示されたダイアログと似たものが表示されていますね?さっきはこれが表示されていた訳です。(正確には違うけど今回はそこまでは踏み込まない)
納得したら早速リソースを弄ってみましょう。画面の四隅を探しツールボックスからStaticTextを選択して下さい。(ダイアログエディタ消しちゃダメよ)
005
おもむろにエディタ上のダイアログに2個こんな感じに貼り付けちゃって下さい。グリッドモードだとそれなりにきっちり貼り付けられます。(これはプロパティ弄った後ですが)
006

次にリソースIDを設定するので貼り付けた左のスタティックを右クリックしてプロパティを選択して下さい。で、こんな風に修正します。

007
ID IDC_STATIC1に変更
Caption 空に
Client Edge True

同じ要領で右のスタティックもIDC_STATIC2に変更して下さい。プロパティを説明すると

ID ウィンドウ上のオブジェクト番号
Caption 表示する文字列
Client Edge Trueでオブジェクトを窪ませる
では早速リビルドして実行しましょう。こんな感じに表示されましたね?この通り、Win32で同じ処理を構築するとしたらCreateWindow()やらで大騒ぎですが、MFCならダイアログを作るのは簡単です。
ではまた次回。
008