Version 2.0
計算機の作り方
「というわけで、最初に作るアプリは、計算機にします」
『ぶーぶー、なんで計算機なの? ゲームとか時計とか、もっとかっこいー
のがいいなー』
「もともとコンピューターっていうのは計算をするためのものだから、計算
機を作ると仕組みとか分かりやすいからね」
『ふーん』
「じゃ、まず新しいプロジェクトを作ってみようか。この前と同じ方法でい
いんだけど……憶えてる?」
『うん。えーっと……』
デスクトップ上の "Visual C++ 6.0" をダブルクリックしたあと、メニュー
から【ファイル】−【新規】を選ぶ。ダイアログが開く。
『【MFC AppWizard (exe)】だよね』
「そうそう。あ、この前作ったとき、プログラムが最初っからできてたで
しょ」
『うん。ビルド、っていうの選んだらアプリ作れちゃった』
「そのための準備をしてくれるのが、 "AppWizard" っていうの」
『へ〜。これが、色々助けてくれてたんだ』
「ちなみに "App" は<アプリケーション>、 "Wizard" は<魔法使い>
って意味」
『あ、前に魔法とか言ってたものね。じゃーさ、最初の "MFC"は?』
「これも手助けしてくれたもの。前に "afxwin.h" って見たでしょ。こっち
の方にもプログラムがあって、それを利用しているからこの前のアプリも簡
単に作れたんだけど、その利用したプログラムを "MFC" って言うんだよ」
『えむえふしー、ねぇ』
「そ。これは今度しっかり見てくから、今はまだいいかな」
『はーい。えっと、【プロジェクト名】は、計算機アプリだから "Calc"と』
左の欄から【MFC AppWizard (exe)】を選び、右の【プロジェクト名】に
"Calc" を書き込む。【位置】は前回作成した "FirstProject" があるフォ
ルダと同じ場所にする。
『これだけでいいんだよね』
「そうだよ」
『んじゃ、【OK】押して……っと』
【MFC Appwizard ステップ 1】というダイアログが表示される。
『<作成するアプリケーション>ってどうするの?』
「今回もダイアログ」
『またダイアログ?』
「そ。他の【SDI】とか【MDI】とかは構造が複雑だから、わかりにくいんだ
よね。最初はダイアログから始めるのがいいと思うよ」
『そういうもんなんだ。じゃ、ダイアログと』
【ダイアログ ベース】を選択する。
『そういえば、下の【リソース……】って、ダイアログとかアイコンのリ
ソース?』
「そうそう。リソースって文字をいっぱい使うから、リソースを付け替える
だけでアプリの英語版や日本語版を作り分けられるから」
『それをここで指定できるんだ。日本語でいいんだよね?』
「もちろん」
【次へ】ボタンを押す。次のページ、【MFC Appwizard ステップ 2/4】が
表示される。
『いろんな設定あるね。これはそのままでいいの?』
「ここで<使う>とかセットしても、アプリ作るときに使うかどうかは分か
んないから、全部チェックしておいてもいいんだけどね」
『下の【ダイアログのタイトル】は?』
「この前ダイアログエディタで遊んだときに、ダイアログのタイトル変えら
れたでしょ」
『あ、あの右クリックメニューの【プロパティ】のことね』
「だからここで変えなくてもあとから変えられるから、というわけで
【次へ】だね」
『はーい』
【次へ】ボタンを押す。次のページ、【MFC Appwizard ステップ 3/4】が
表示される。
『あれ? これこの前見なかったけど……』
「この前はこのページ見ないで【終了】押しちゃったからね」
『そっか。一番上……は選べないね。真ん中の【ソースファイルのコメント】
って何?』
「<ソースファイル>っていうのはそのまま<プログラムのファイル>って
言っていいかな。コメントはコメント、つまりいろんな注意書きをあらかじ
め書いてもらうかどうかってことだね」
『そんなの書いてあった方がいいじゃん。てことはそのままと。その次の
【MFC ライブラリとのリンク】ってのもちょっと分かんないかな。 "MFC"
って、さっき教えてもらったのだよね』
「そうなんだけど、これはちょっと難しいかなー。でもどっちでもいいんだ
けどね」
『これはまた今度って感じかな。じゃ、【次へ】と』
【次へ】ボタンを押す。次のページ、【MFC Appwizard ステップ 4/4】が
表示される。
『あれ? なんか見たことあるよーなのが……』
「この前のプロジェクトで、 "FirstProject.cpp" とか "FirstProject.cpp"
っていうファイルに<クラス>っていうパーツが入ってる、みたいなことを
説明したでしょ」
『うんしたね。って、今言ったようなのを決めるのが、右下の欄ってこと?』
「そういうことだね。ま、このデフォルトが分かりやすいからこのままでい
いんだけどね」
『なーんか、結局そのまま素通りしたって感じ』
「今回のアプリ作り終えたら、ここまでのことたいがい理解できてるように
なってると思うよ」
『なってるかなー』
「努力しないとね」
『はーい。じゃ、【終了】っと』
【終了】ボタンを押すと、【新規プロジェクト情報】というダイアログが
表示される。
『ここに書いてある<作成されるクラス>とかって、今さっきのページの設
定だよね』
「そういうこと。ま、このダイアログは確認だけだから、無視していいかな」
『はーい』
【OK】を押すと、【ワークスペースウィンドウ】に【リソース】のツリー
が表示される。また、ダイアログエディタが起動してアプリのダイアログが
表示される。
「おーっと、たぶん色々したいと思うけど」
『したい〜、ダイアログいぢくりまわしたい〜』
「ひとつずつ憶えながらね」
『はーい』
「まず真ん中に【TODO:ダイアログのコントロールをここに配置】っていう
のがあるでしょ」
『トド?』
「なんでやねん。 "To Do" つまり<すべきこと>っていう意味」
『要するに<ここにダイアログのコントロールを配置しろワレ!>っていう
ことよね。で、<コントロール>ってなに?』
「<コントロール>っていうのはダイアログの上に載せる<パーツ>のこと。
右上にある【OK】とか【キャンセル】ってあるでしょ。これは<ボタン>
っていうコントロール」
『あ、押しボタン式、とかのボタンよね』
「そういうこと。あとこの【TODO:】もコントロールのひとつで<スタ
ティック>っていうの」
『スタティック?』
「<静かで動かないもの>って意味かな。このコントロールはただ文字を表
示するだけ」
『静物絵画、って感じなのかなー。ねーねー、他のコントロールは?』
「ここにあるよ」
マウスカーソルがツールバーの上をクルクル回る。ツールバーの端には二
重線とxボタン。左上にはカーソルの絵、そこからサボテン、Aa、abI
などよく分からないボタンが並ぶ。
「ここにあるのがコントロール。ちょっとこの見た目だと分かりにくいと思
うけど、貼り付けてみれば見慣れたものだって分かると思うよ」
『じゃー貼り付けていい?』
「じゃ、ボタン貼り付けてみて」
『他のじゃダメ?』
「ダメ。また今度ね」
『なんか最近<また今度>多くない?』
「ギク」
『だから最近購読登録数伸び悩んでるんだよ』
ガーン!!
「ま、今日はとりあえず計算機を作ることがメインだから、ね」
『はーい。ボタン、よね。……ボタンってどれ?』
「□の上に "XYZ" って書いてあるのの右隣、長方形の」
『言われてみればボタンっぽい形してるね』
マウスカーソルが長方形の形をしたものの上へと来る。<ボタン>という
チップヘルプが表示される。
『で、どうするの?』
「ドラッグするのが簡単かな。そのボタンで押して、そのままダイアログへ
持っていって、離せばOK」
マウスカーソルがその通り動く。白枠に囲まれたボタンが貼り付けられ、
中に【Button1】と書かれている。
「ボタンのIDと名前、変えておこうか。<プロパティ>の出し方、憶えて
る?」
『もちろん』
そのボタンの上で右クリック、メニューの一番下、<プロパティ>を選択
する。ダイアログが表示される。
「IDとボタンの文字変えておこうか。IDは "IDC_B_EQUAL" 、キャプショ
ンは "=" ってところかな」
『IDってこういうの……コントロールって言うんだっけ、このコントロー
ルの出席番号っていうか、背番号みたいなのだよね』
「そうそう。前にやったとおり、ここでID付けると、 "resource.h" って
いうファイルの中にこのIDが書き込まれるから」
『あれ? この前見た時には、IDって数字でも書き込まれてたよね。それ
は付けなくていいの?』
「付けなくていいっていうか、代わりに付けてくれるんだよ。僕たちプログ
ラマーにとって大事なのは数字じゃなくて、その別名のID名、つまり
"IDC_B_EQUAL" の方ってこと。数字の方はVCが勝手に付けてくれるから」
『便利なのねー』
「ちょっと見ておこうか。メニューの【ファイル】−【すべて保存】を選ん
でから、 "resource.h" を見てみて」
『はーい。えっと……』
マウスカーソルが動いて【すべて保存】を選択する。そのあと【ファイル】
−【開く】ダイアログから "resource.h" を選び、【開く】を押す。テキス
トエディタが開き、 "resource.h" が表示される。中には、次のような行が。
#define IDC_B_EQUAL 1005
『ホントだー、なんかよく分かんないうちにIDに数字が』
「別に数字付けるのに悩む必要ないからねー。んじゃそのウィンドウ閉じて、
さっきのダイアログエディタの方にして」
『はーい』
メニュー端のxボタンを押して "resource.h" を消し、先ほどのダイアロ
グを表示させる。
「んじゃ、さっき作った【=】ボタンの右クリックメニューの中から、
【イベント...】っていうの選んで」
『イベント?』
右クリックメニューの中から【イベント】を選ぶと、見たことのないダイ
アログが表示される。タイトルは【クラス CCalcDlg 用の Windows メッセー
ジおよびイベントハンドラの新規作成】と書かれている。
『う”、なーんかよく分かんないの出て来ちゃった』
「大丈夫大丈夫。右端のボタンの中から【追加と編集】っていうの選んでみ
て」
『追加と編集、ね……』
【追加と編集】ボタンを押すとさらにダイアログが表示される。タイトル
は【メンバ関数の追加】。
『う”、またわけ分かんないのが……』
「これも【OK】押して」
『もうされるがままって感じね……』
【OK】ボタンを押すと、すべてのダイアログが閉じ、ダイアログエディタ
も閉じて、テキストエディタが開き、なにやらプログラムのようなものが表
示される。
void CCalcDlg::OnBEqual()
{
// TODO: この位置に(以下略)
}
2行目が選択状態として反転表示されている。
『キャーッ、プログラムよ、プログラムよあなたっ!! 早く退治し
てっ!!』
「まるでゴキブリみたいな言われようだね……。そう、これがプログラム。
火美ちゃんがこれから相対しないといけない相手」
『ええっ!? 私ゴキブリと対決しなきゃいけないの?』
「だからゴキブリちゃうて!!」
『でもわけ分かんないしー、なんかよくわかんないしー、やっぱゴキブリよ
ゴキブリッ!!』
「でもさ、これから火美ちゃんはプログラム作るんだから、自分で作れば怖
いものナシでしょ?」
『ゴキブリなんか作りたくない〜』
「ゴキブリを征する者は世界を征す!!」
『あ、なんかそれ分かる』
「分かるんかい!!」
『なんかこのわけ分かんないのを理解しなきゃいけないっていうのは、なん
か生理的にダメって感じがしないでもないんだけど、でも克服しなきゃね』
「そこまでイヤかな……」
『で!? どうすればいいわけ!?』
「じゃ、 "TODO" の下の行に1行加えて、こんな風に書き換えてみて。
void CCalcDlg::OnBEqual()
{
// TODO: この位置に(以下略)
MessageBox( "1 + 2 = 3" );
}
『この通りに?』
「そう、この通りに。大文字小文字ちゃんと区別してね。あと、全部半角ア
ルファベットでね」
『日本語使っちゃダメってことよね。うん、打ち込んだよ』
「じゃ、ビルドしてみて」
『え? ってことはこれだけでいいの?』
「そゆこと」
メニューから【ビルド】−【ビルド】が選ばれる。新たにウィンドウが生
まれ、ハードディスクが回り、止まったときには "Calc.exe - エラー 0、
警告 0" と表示されていた。
「はい、計算機完成!!」
『うそっ、もう!? ホントに簡単に作れちゃうよねー。試していい?』
「いいよ。【ビルド】−【実行】ね」
その通りにすると、ダイアログエディタで作ったとおりのダイアログが表
示される。
『ここまでは、この前の "FirstProject" と同じよね』
「じゃ、【=】ボタン押してみて」
『ほい、ポチッとな』
ボタンを押すとさらにダイアログが表示される。タイトルは "CALC" 、中
央には "1 + 2 = 3" と書かれている。
『うわーすごいっ!! ちょっと変だけど、一応計算機って感じ!』
「そうでしょー」
『じゃーさ、<2+2>を計算するときにはどうすればいいの?』
「さっきの1行を」
MessageBox( "2 + 2 = 4" );
「にすればいいだけだよ」
『なーんだ、簡単よねー……ってあれ?』
「<10+10>なら "10 + 10 = 20" 、<10−3>は "10 - 3 = 7" 、
<13x7>なら……えっと」
『ちょっとオッサン……』
/*
Preview Next Story!
*/
『なんか今日は言われたままって感じ』
「大丈夫だよ、そのうち慣れるって」
『ホント?』
「というわけで次回」
< Version 2.1 イベントと関数 >
『につづく!!』
「その違和感も少しずつ慣れて、次第に快感へと……」
『あんた最近変わったよね』