VC++5.0入門24
チュートリアル読書会6 98/5/5

こんにちは。ゴールデンウィークはいかがでしたか。家(うち)は小さい子どもを二人抱えて、遠出はできませんでしたが、楽しいお休みでした。というわけで、VC入門もちょっと手を抜いてしまいました。(なんか、しょっぱなからですね。へへへ。)
実は、多くの方からたくさんの励まし(や質問)のメールをいただいています。どうもありがとうございます。ただ、産休をいただいて以来、返事がほとんど書けないでいます。すみません。メール書いたのに、返事が無いなぁという方も多いと思いますが、しばらくご容赦のほどを
今回は、ヘルプ(InfoView)で言うところの「ユーザーインターフェイスの作成」ですね。ここは、メニューとツールバーの編集ですが、どうでしょうか?

ちょっと、一緒に見てみましょうか。、、、まず、メニューの編集ですが、ResourceViewのペイン(窓、ResourceViewのタブをクリックすると現れる)を見よ、とありますね。リソースとは、メニューやツールバーやダイアログボックスのように、C++のコードとは独立したウインドウズ(など)のプログラムに何度も使い回しのできる「もの」で、このResourceViewでビジュアルに編集できます。

ちなみに、VCのライバル(?)にVisualBasic(VB)というものがあります。(ライバルというより、ちょっと目的が違うもの、と言うべきかもしれません。立場や考え方によって意見が様々なので、あんまりこの件で抗議のメールを書かないでくださいね。)VBはとても簡単にウインドウズプログラミングができる言語/環境/処理系ですが、このResourceViewの機能を使いこなせると、VBのようなプログラミングもできます。(とは言え、個人的感想では、やはり「簡単プログラム」にはVBの方が易しいようです。ではなぜVCを選んだか、と言うと、「本格的なプログラム」の作成にはVCの方が良いように思うからです。ただ、これは個人的な感想です。VBでも本格的なプログラムができる!というお叱りもあるでしょう。私がプログラムを組む時はVCの方が好き、なぜなら、C++だから、、、というだけです。あんまりおこんないでください。なんでC++が好きかはVC入門ではなくC++入門でも見てください。あっしはC++が好きなんす。

さて、内容に戻りましょう。えーと、まず、デフォルトメニューで、メニューがふたつあるようなことが書いてあります。これはMDI(マルチ・ドキュメント・インターフェイス)という形式、つまりドキュメントを見るウインドウをいくつも使う形式なので、ふたつあるのです。これは、普通、ドキュメントを見るウインドウがひとつも開かれていないときと、ひとつ以上開かれているときでは、違うメニューがつくからです。(VCをはじめた頃、SDIしか作ったことがなかったので、ちょっとだけ悩んだような気がするのです。みなさんは別に悩まなかったかもしれませんね。)

チュートリアルのこの辺で私がもっとも悩んだのはメニューに「ペン幅」という項目をいれながら別に「太線」などという似て非なる項目を入れていることです。実用を考えると、今でも、やはり、ちょっと変な気がします。しかし、これはチュートリアルなので、いろいろやっているのだ、と思うと納得がいきます。(そう思わない人はそれで良いのですが、とにかく)ここで悩む必要はありません。具体的なコードを書くときに、これらのメニュー項目の意味もわかりますので、それまで、あまり深く考えないようにしましょう。

メニューの編集方法については、逃げようが無いので、ひとつひとつ丁寧に、チュートリアルに書いてあることを実行してみてください。やってみるとそんなに難しくないと思います。(それに、うまく行くと、案外、達成感のあるところですね。)
メニューにIDを割り振る意味はわかりますか?これは、このメニューの項目がユーザによって選択されたときに、ウインドウズが送信するメッセージをプログラマが選んでいるのです。つまり、例えば、(チュートリアルに従って作れば、)メニューの「すべてを削除」という項目がユーザに選択されるとウインドウズがID_EDIT_CLEAR_ALLのメッセージを(アプリケーションに)送信することになるのです。そのメッセージを受けたときにアプリケーションがどうするかは、次回見ることになります。
メニューはアプリケーションに付いているのに、わざわざ、ウインドウズがメッセージを送信するようにして、そのメッセージを受けたときにアプリケーションがどうするか、、、なんて、ずいぶん無駄な感じがするかもしれませんが、ウインドウズプログラムとはそういうものなんです。そういうことをVC入門のはじめの頃に書いたのでした。
(メッセージについて、ちょっと正確に言うと、メニューの「すべてを削除」が選択されると、ウインドウズはWM_COMMANDというメッセージを送信します。このときに、同時にID_EDIT_CLEAR_ALLというIDをアプリケーションに通知してくれるのです。なんだかめんどう、という印象があるかもしれませんが、まあ、今は別にそんなに気にしないでもかまいません。この辺のことはウイザードが自動でやってくれます。それは次回ですね。)
なおIDはもともと用意されているものから選ぶ場合と、プログラマが自分で作る場合があります。多くのプログラムで使われる「標準的な項目」については用意されているものを使い、そうでないものには、自前のものを使います。まあ、チュートリアルを見ていけば、なんとなくわかると思います。(「すべてを削除」なんかは多くのアプリケーションにありそうなので、MFCで用意されているのです。一方、「ペン幅」なんて普通のアプリケーションには無いですね)
ツールバーについても、コメントはだいたいメニューのときと同じです。あ、ひとつだけ。私は、ツールボタンをちゃんと描くのがおっくうで、適当に描きました。もちろん、どんな絵でも機能しますので安心して下さい。(当たり前ですね。)

さて、それで、これらのメニュー項目やツールボタンが選択されたらどうするか、、、は次回 の「ウィザード バーによるビジュアル オブジェクトとコードの対応付け」ですね。
今回はこの辺で、、、。てけてんてけてん、、、。
目次のページ
前のページ
後のページ