
/*
    KAB-studio.h
        　ＫＡＢ−ｓｔｕｄｉｏで先週更新した内容
        が格納されたヘッダーファイルです（笑）。

    (C)KAB-studio ALL RIGHTS RESERVED.
        http://www2.justnet.ne.jp/~kabstudio/
        kab-studio@multimedia.design.co.jp

    送信日： 1999/10/11(Mon) No.027
    配信数： 2920（ Mag2 + Pubzine ）
＊    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/


/*                        今週の「どう？」                        */

『じゃ、次のお便り』
「あ、次のお便りがある……では紹介」

　はじめまして。ＫＡＢ−ｓｔｕｄｉｏを購読してるものです。
　毎週月曜日を楽しみに待ってます。
　あの、さっそくですが、最近の内容難しいです。じぶんはＣの知識は少し
あるつもりです。どのくらいかというとポインタの使い方、構造体が少しで
す。ですから繰り返し、分岐の説明の時は楽勝だったんですけど、クラスの
説明がわかりません。
　クラスも少しは勉強したことあるんですけど、ほんとに少しですし・・・
少し話は変わりますが、version1のときはほんとにアプリケーションを作っ
てるんだと実感できてよかったんですけど、最近はなぜこのようなことを説
明して下さるのかわからなくなってきました。たぶん、後々役に立つことな
のでしょうが・・・・
　以前どこかの週でまず頂上まで上り詰めて少しずつ下りて来るみたいなこ
とを書かれたのを覚えています。この頂上の部分をもっと続けて欲しいなと
思います。

『そうよそうよ、いつまでたっても計算機できないしさー、なんかつまんな
いなー』
「う”、確かにそうかも」
『水希ちゃんの言い分は？』
「確かに、今は回り道してる状態かな。たぶんこんな解説してるの、他の本
とかじゃないと思うし」
『それって意味あるの？』
「僕はそう思ってるよ。サンプルプログラムと同じものが作れるようになる
よりも、ね」
『ふ〜ん』
「でも……なんか最近、少し遅いかな〜と思ってちょっと急ぎ過ぎちゃった
かも」
『あたしはそう感じなかったけど、ちょっとあいまいな部分多かったかなー』
「回り道がホントに必要なのか、分かんないと心配だよね。急いだ分、その
辺をおろそかにしちゃったのがまずかったかも」
『まずい！　と思ったらどうするの？』
「というわけで！　今回は予定を変更してクラスについてもう一度解説しま
す！」
『おー』
「それに、この Ver. の最後では、フリーウェアの公開方法まで解説するつ
もりだから、そのくらいまで行けば結構面白くなるんじゃないかな」
『だといいけどねー』
「う”」
『じゃ、次のお便り……あ、まだある！』

・どうも、昨日購読開始したポリゴンです。
僕は、lcc-win32 というフリーの環境を使ってます。
SDK / C という環境でプログラミングしてます。
参考のためではなく、読物として楽しませてもらっています。

「読み物として読んでくれるっていうのもうれしいね」
『ねー、どーゆーの、この lcc-win32 って』
「つまり、ウィンドウズアプリを作るためのアプリには、ＶＣ以外にもある
ってこと」
『フリーってことは、タダなの？』
「そう。他にも gcc とか、結構タダのがあるよ」
『タダならそれ使えばいいのに』
「うーん、そうじゃなくて、もともと僕はＶＣを使う人向けに書いてるから」
『？？』
「ＶＣを使ったプログラムってそれなりにクセがあるから、そういうのに難
しさ感じてる人向けに書こう、って感じかな」
『あ、ＶＣを買っちゃった人向け、とか言ってたもんね』
「って言っても lcc-win32 にも難しい部分があるからね。勉強してって、
最終的な部分では一緒になると思うよ」
『アプローチの違いってこと？』
「そんな感じかな」
『私たちは KAB-studio.h や #pragma twice についてのご意見ご希望ご感想
を切望しています！！』
http://www2.justnet.ne.jp/~kabstudio/Info/MailMagazine/Impression/
「のページで送ってください」
『お待ちしてまーす！』


/*                １９９９年１０月１１日（月）の更新              */
http://www2.justnet.ne.jp/~kabstudio/Info/News/

・更新なし（泣）。
　うーむ……冬の時代っすね（泣）。


/*                        チョー普通な日記                        */
http://www2.justnet.ne.jp/~kabstudio/nikki2/

１９９９年１０月３日（日）：
　現在実験の勉強中。とゆーわけで「トランジスタってなに？」とか。あと
これからのかなゆ〜の方針とか、「でわ論」とか（笑）。

１９９９年１０月４日（月）：
　かなゆ〜アーカイブが大人気！　支持の高さを改めて痛感させられた次第
です、はい。年末には必ず復活するから待ってね！　そして、意外な広がり
を見せる「でわ論」（笑）。「でわまた」か、「ではまた」か。

１９９９年１０月５日（火）：
　不安定な日。いつも見てるテレビが変わったりすると曜日感覚狂いません？

１９９９年１０月６日（水）：
　さらにトランジスタ、いいかもリヴァイアス、出たぞ新ｉＭａｃ。グラ
ファイトグレーかっこいいのぉ……。

１９９９年１０月７日（木）：
　厄日（泣）。ガッコ行ったら授業は休みだし、帰ったらスピーカー壊れて
るし、予備のスピーカーを継なぐためのジャックを買ったら間違ってモノラ
ル買っちゃうし。あああああ……。

１９９９年１０月８日（金）：
　エクセルサーガ！　エクセルエクセルエクセルサーガ！！　見れ！　見
れ！！　見れぇ！！！

１９９９年１０月９日（土）：
　と思ったら関東圏でしか放送されてなかったねテヘってそーゆーネタを
メールマガジンに書くってのがまずいんじゃないかとかゆーのがオチと思わ
せといて「皮オペ」……。


/*                       #pragma twice                            */

　Version 3.2
クラスを見渡そう！

「と、いうわけで今回はクラス特集！」
『おー！』
「……そのオヤジくさい歓声やめたら？」
『イヤっす！』
「……えっと、まずライブラリについての復習から」
『はーい。たしかＭＦＣとかＡＰＩとかだよね』
「そうそう。まずウィンドウズプログラムを作るのに絶対必要なのが、
ＡＰＩ。これがなきゃウィンドウズアプリは作れないってこと」
『でも使ってないよね』
「ＡＰＩの代わりにＭＦＣを使ってるからね。ＭＦＣが間接的にＡＰＩを呼
び出すことで、ダイアログ表示したりしてるわけ」
『でもさ、ＭＦＣとＡＰＩって似てるって言ってたよね。わざわざＭＦＣを
使う必要ってあるの？』
「それが最初の注目点。このページ見てみて」
『あ、かぶスタのホームページだね』

http://www2.justnet.ne.jp/~kabstudio/Programing/Codian/MxA/02.html

「この中に書いてあるプログラムは、〈ＭＦＣを使わないで、ＡＰＩだけで
作った、ウィンドウを表示するプログラム〉だけど……感想は？」
『……なんか長いねー』
「そう。ＡＰＩだけで作ると、かなり大変なんだよね、ウィンドウズアプリ
を作るのって」
『だからＭＦＣを使うと』
「そゆこと。ちなみにＡＰＩだけでアプリを作る方法が【猫でもわかるプロ
グラミング】 ってホームページに書いてあるから参考にしてみてね」

http://www.iacnet.ne.jp/~yasutaka/c_lang/

『ってなにライバルのページ勧めてんのよ！？』
「ふっ、かぶスタの７倍のヒット数を稼ぐ大人気ホームページと、なに張り
合おうっていうの……」
『あ、遠い目……』
「ま、ＡＰＩだけでプログラム作るのってとっても役立つから、暇なときに
読んでみるといいよ。僕もかなり参考にしたしね」
『へー』
「話を戻すと……」
『ＡＰＩだけだと面倒だからＭＦＣを使うってことよね』
「そうそう。ＭＦＣには、アプリそのものを管理する CWinApp や、ダイア
ログを管理する CDialog とかのクラスが用意されています。この中に、さっ
き以上のながーいプログラムが詰まってるから、楽ができると」
『確かに楽ねー、なんもしてないんだから』
「さて、ここまでが〈ＭＦＣに用意されているクラス〉」
『あのいーっぱいあったクラスの表の中のふたつ、ってことね』
「ここで、自分でダイアログ作って、ボタンをひとつ付けました。さて、こ
のボタンを押したときに計算をしたい、そういうときどうするか」
『確かイベントとかゆーのだよね』
「詳しくは Ver 2.0（ No.11 ）とかを見てねってことで。そう、〈ボタン
を押した〉っていう〈イベント〉に対処するメンバ関数を作ればいいんです。
でもこれはどんなクラスのメンバ関数でもできるわけじゃなくて、 CDialog
じゃないとできないことなんです」
『へー、CDialog ってそういうこともしてるんだ』
「でもさ、CDialog に直接〈計算機能〉とか付けられないでしょ」
『CDialog ってどこにあんのかも、どーやって作り替えればいいのかも分か
んないし、確かに無理っぽいよね』
「そこで、ＶＣが自動的に〈好きなように書き換えても、メンバ関数を追加
してもいいクラス〉を作ってくれます」
『それってもしかして CCalcDlg とかのこと？』
「そう！　プロジェクトを作るとき、ＶＣは自動的にクラスを作ります。ア
プリの中心を管理するクラスとダイアログを管理するクラスをね。でもただ
のクラスじゃ役に立たないでしょ。そこでこの作ったクラスに〈ＭＦＣのク
ラスの機能〉を与えるわけです。それが」
『継承！』
「そういうこと！　継承を使うと、特定のクラスが持っているメンバ関数を
そのまま使えるクラスを作れる、そこで、主要な機能をＭＦＣのクラスで、
特別なアプリ独自の機能をプロジェクトのクラスでっていうふうに分業する
わけだ」
『つまり背後霊よね！』
「はいごれい？？」
『あったまいー男の子と元気な女の子がいてさー、女の子がピンチになると
男の子の魂が女の子に乗り移って、バツグンの運動神経＋天才の頭脳でピン
チを乗り切るのよ！！』
「はぁ……まあそんか感じって言われればそうかもしんないけど……」
『その２人って相思相愛なんだけど、お互いのこと解り過ぎちゃってかえっ
て近づきにくかったりしてなんかじれったいのよ〜』
「かーみーちゃーんー」
『はいっ！　すみませ〜ん……今度コミックス読む？』
「読みません。さてイメージしましょう。右側に大きな塊、左側に小さな塊、
間にはスペース」
『うんうん』
「右側の大きな塊には、ＭＦＣのクラスがいっぱい詰まってる。この中のク
ラスはとっても便利だけど、簡単には書き換えられない」
『左側は Calc とかのプロジェクトのクラスが詰まってる。こっちは新しく
作ったのだから、自由に書き換えられ、でしょ？』
「このふたつの間を継なぐものは？」
『継承！　左側の〈自分で作ったクラス〉は、継承ってので右側のＭＦＣの
クラスの機能が使える、だよね！』
「ちゃんとわかってんね。さらに……えっと、ＶＣで【ワークスペース】を
開いて、一番左のタブ、【ClassView】をクリックして」
『あ、これって初物だね。クリックと……あ！』
　おなじみのツリー表示。一番上には【Calc クラス】、その下に CAboutDlg,
CCalcApp, CCalcDlg が表示されている。
『これって全部クラス！』
「ここに表示されてるのは、今のプロジェクトに含まれているクラス」
『こんなふうに、プロジェクトのクラスを見られるってことね』
「それだけじゃないよ。 CCalcDlg をダブルクリックして」
『ぱちぱちっと』
　テキストエディタが開き CalcDlg.h ファイルの中身が表示される。
「拡張子が【 .h 】のファイルにクラスの情報や、メンバ関数の宣言が入っ
てる、憶えてるね？」
『憶えてるよー。これが〈 CDialog から継承してる〉って意味でしょ？』

class CCalcDlg : public CDialog
{

「そうそう。で、次。さっきの【ClassView】で、 CCalcDlg のツリーを開
いて」
『田をぽちっと』
　田をクリックすると、変なアイコンと文字が並ぶ。
『あ、これって CCalcDlg のメンバ関数だ！　えっと、＝ボタンを押したと
きのは、OnBEqual() っと！』
　OnBEqual() をダブルクリックすると、テキストエディタに CalcDlg.cpp
が表示され、CCalcDlg::OnBEqual() の行にカーソルが合っている。
『こーゆーふーにも開けるんだー』
「拡張子が【 .cpp 】のファイルにメンバ関数の定義、つまり中身が入って
る」
『はい憶えてまーすヘッダーファイルとインクルードファイルがペア、で
しょ？』
「大丈夫そうだね。さてもう一度復習！　ＭＦＣのクラスから継承したクラ
スを作ってもらって、そのなかに自分が必要とする機能を埋め込む！」
『それが基本！　って感じ？』
「ＭＦＣアプリを作るときは、ね。最後に確認ってことで、いくつかメンバ
関数を使ってみようか」
『使ってみる？』
「繰り返しになるけど、CCalcDlg なら……」

class CCalcDlg : public CDialog
{

「って書いてあるから、 CDialog のメンバ関数はぜーんぶ使えるし、さら
に CDialog が継承してる CWnd のメンバ関数も使えるんだったよね」
『う”、ＭＳＤＮの CWnd のあの膨大なメンバ関数が目に浮かぶ……』
「その中からひとつ使ってみようか。 CWnd クラスってどんなクラスだっけ」
『確かウィンドウを操作するクラスだったよね』
「そうそう。ダイアログもウィンドウのひとつだから、 CDialog を CWnd 
から継承して、ウィンドウの操作もできるようにしてるわけ」
『へ〜、そういう意味もあるんだ』
「そこで、ウィンドウとして操作してみましょう。今日最初のプログラム。
いつもの〈ボタンを押したとき〉メンバ関数を書き換えてください」

void CCalcDlg::OnBEqual() 
{
    SetWindowText( "あいうえお" );
}

『SetWindowText() って？』
「分からなかったらまずＭＳＤＮ」
『教えてくれてもいーのに、ケチ。えっと、ダブルクリックしてＦ１。みっ
つ出てきたけど……とりあえず CWnd::SetWindowText かな』

void SetWindowText( LPCTSTR lpszString );

『引数は、LPCTSTR だから文字列よね。あ、ちゃんとそうしてるね。えっと
説明は……ウィンドウのタイトルを変える？』
「試してみれば？」
『ビルドして実行、【＝】ボタンを押して……あー！！　ダイアログのタイ
トルが〈あいうえお〉になった！！』
「これが〈ウィンドウを操作する〉ってこと。こーゆーことができるように
するために、継承してるってわけだ」
『確かに、これならダイアログは表示できるし、ウィンドウのタイトルも変
えられるよね』
「他にも色々できるから、暇なときに CWnd のメンバ関数一覧を眺めてみる
のもいいかも」


/*
    Preview Next Story!
*/
『それにしても、こんな簡単に予定変えちゃっていいの？』
「いいんじゃないの？」
『軽いわねー』
「レスポンスの良さは重要だよ？」
『これだからホームページあがりは……』
「というわけで次回」
＜ Version 3.3 ダイアログができるまで ＞
『につづく！！』
「というわけで少しスローダウンして、ゆっくりいきましょう」
『あ、また少しタイトル変わった……』



/*            １９９９年１０月１８日（月）の更新予定              */

・更新なし（泣）。
　当分の間、更新はないでしょう（泣）。次の更新は、きっと１１月表紙。
でもそれも結構ギリギリ……。


/*                          ご注意！！                            */

・このメールを返信しないでください。
・感想は下のページから送ってください。
http://www2.justnet.ne.jp/~kabstudio/Info/MailMagazine/Impression/
・購読登録を解除したいときには下のページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーは下のページにあります。
http://bigbeat.tegami.com/~mgsearch/frame.cgi?id=0000012198
http://www2.justnet.ne.jp/~kabstudio/Freeware/

/*
    KAB-studio.h
    Weekly Mail Magazine.
    Written by Kaburaya Seiden.

    (C)KAB-studio ALL RIGHTS RESERVED.
        http://www2.justnet.ne.jp/~kabstudio/
        kab-studio@multimedia.design.co.jp
*/


/*                      See you next week!!                      */


