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

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

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


/*                        年末年始のお知らせ                      */

　ＫＡＢ−ｓｔｕｄｉｏはこの年末年始に結構変わります。忙しくなかった
らもっと前にしてたことなんだけど、まー色々あってここに来てばたばた
と……。
　で、どんなふうに変わるかというと。
　
１２月１３日（月）：金菜さんの憂鬱リスタート
　これは KAB-studio.h で連載します。つまりもう掲載されてます（汗）。

１２月２０日（月）：プログラミング辞書単語受けつけ再開
　再び辞書に活気が戻ります！　さらにおまけ付きの予定。

１２月２２日（水）：鏑矢の憂鬱スタート
　こっちが言わばホントのかなゆ〜リスタートです。

１２月２７日（月）：小説削除
　どうも、今のまま小説を放置しておくのはいかんかなと思い、現在掲載し
ているすべての小説を削除します。もし見ときたいなら今のうちに。

１月１日（土）：あけましておめでとう
　新しい表紙を掲載します。あとチョー普通な日記はやってるんで、気が向
いたら顔出してね。

１月３日（月）：KAB-studio.h お休み
　まぐまぐ＆Ｐｕｂｚｉｎｅのメンテ日に重なるんで、この日はお休み。年
明け最初は１０日の配信です。

１月１０日（月）：ぷらとわ質問箱スタート
　#pragma twice のフォローアップ企画ついにスタート！　読んでて分から
なかった部分をこれで解消しよう！

　という感じ。かなり投稿系（汗）が多いんで、皆さんどんどん活用してくれ
るとうれしいです。


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

・「金菜さんの憂鬱」連載開始！
　皆さんお待ちかね！　「金菜さんの憂鬱」がリスタートしました！
　これからのかなゆ〜は KAB-studio.h に連載されます。内容は、中上級者
向け講座。とりあえず最初は「アプリのツボ」と題して、いろんなアプリ
ケーションの作り方について解説します。
　更新日を見れば分かるとおり……これに載ってるってことですね（汗）。
#pragma twice の次にあるんで読んでみてください。
　……はて、これってかなゆ〜？　と思う方もいるでしょう。前のかなゆ〜
は「鏑矢の憂鬱」と名を変えて１２月２２日スタートの予定。もちっとまっ
てね。


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

１９９９年１２月５日（日）：
　実験レポート書いたりイラスト描いたりホームページの更新の準備したり。
この号じゃ更新予定はっきり書いてるけど、そこまでは紆余曲折があったの
よ。

１９９９年１２月６日（月）：
　がびん！　かぶヘッダーの広告が思惑と違う！！　とゆーわけでのっけか
らやばいです。むぅ。

１９９９年１２月７日（火）：
　さらにかぶヘッダーの購読登録数が伸び悩み！　冬の時代突入か？

１９９９年１２月８日（水）：
　イラスト描いたりアニメ見たり本の立ち読みしたり。むぅ。

１９９９年１２月９日（木）：
　格闘家鏑矢正伝が突き極め投げる！　そしてアルカディア購入！！　廃刊
した雑誌が復活するとゆー非常に珍しくそして素晴らしいこの出来事に鏑矢
感激！！

１９９９年１２月１０日（金）：
　すでにお知らせしたよーに、小説は削除してしまうのです。なぜか？　小
説はもう書かないのか！？　とゆーことについてお答え。

１９９９年１２月１１日（土）：
　のんびりー。いつも通りイラスト描いたりアニメ見たり。あとフリーウェ
アのＹ２Ｋとか。



/*                       #pragma twice                            */
http://www2.justnet.ne.jp/~kabstudio/Programing/PragmaTwice/

　Version 3.11
計算機完成！！

『もうウソつかないでよね！』
「分かったって」
『ウソついたらうまか棒の始まりって言わない！？』
「言いません。んじゃ、まず CalcDlg.h を開いて」
『？　CCalcDlg があるのだよね。【FileView】でダブルクリックっと』
「その CCalcDlg の中に……」

/////////////////////////////////////////////////////////////////////////////
// CCalcDlg ダイアログ

class CCalcDlg : public CDialog
{
// （略）

// ダイアログ データ
    // {{AFX_DATA(CCalcDlg)
    enum { IDD = IDD_CALC_DIALOG };
    int        m_iAns;
    // }}AFX_DATA
// （略）

『あ、m_iAns があった！　あれ？　ねぇ、これって色違うよね、他のと』
「これはＶＣのエディタが自動的に色を変えてくれてるから。色はオプショ
ンで変えられるけどね」
『でもなんか意味あんの？』
「もちろん。このメンバ変数は、クラスウィザードが作ってくれたでしょ」
『うん、あたしこんなの書いてないもん。そういうのがこの色ってこと？』
「そう。具体的には……」

    // {{AFX_DATA(CCalcDlg)
    
「と」

    // }}AFX_DATA

「に挟まれている部分がこの色になるんだけどね」
『？？』
「んーと、クラスウィザードはこのふたつの間にメンバ変数を作るような仕
組みになってて」
『目印ってこと？』
「そうそう。だからこの間にあるプログラムは、クラスウィザードが作った
ってことだね」
『それが分かるように、ＶＣが色を変えてるってことね』
「この〈目印〉はコメントになってるでしょ」
『ホントだ、 // が付いてるね』
「つまりプログラムとしての意味がない、クラスウィザード専用ってこと」
『へ〜』
「ま、この辺の仕組みはまだ難しいだろうから、ここでは m_iAns がメンバ
変数としてクラスウィザードに作られた、ってことだけでいいかな」
『うん、メンバ変数が作られたってことは分かったかも』
「じゃ、今度はその使い方。いつものメンバ関数を、こう書き換えて」

void CCalcDlg::OnBEqual() 
{
    TRACE( "%d\n", m_iAns );
}

『あれ？　この前とちょっとちがくない？』
「そ。とりあえず試してみて」
『ビルドして実行、エディットボックスに数字入れて【＝】ボタンを押し
て……あれ！？　０しか出ないよ？』
「で、この前のプログラム……」

void CCalcDlg::OnBEqual() 
{
    UpdateData( TRUE );
    TRACE( "%d\n", m_iAns );
}

「に書き直すと」
『あ、今度はちゃんと入れたのが出てきた。つまり UpdateData() がってこ
と？』
「そういうこと。まず、 m_iAns はただの変数だから特別な機能はなくて、
自動的にエディットボックスの中身が入るとかそういう事はないわけ」
『で、 UpdateData() を呼び出さなきゃいけない？』
「そう。 UpdateData() は CWnd のメンバ関数で、これを呼び出すと、エ
ディットボックスに書かれた数字が m_iAns に書き込まれます」
『なんか間接的』
「それはそうだね。でも〈常にデータが送られる〉ような仕組みだと、エ
ディットボックスの中身を書き換えるたびにデータが送られて……」
『あ、なんか重くなりそう……』
「そういうのを防いだり、あと文字列を数字に変換する機能とか、色々なサ
ポートも必要だしね」
『変換？』
「数字の変わりに文字を入れてみれば分かるよ」
『あ、そういえばそれまだ試してないね。 aiu っと……あ、【整数を入力
してください】ってダイアログが出た！』
「こういうこともしてくれてるわけ」
『こーゆーとこにも〈ＭＦＣの至れり尽くせり〉があるのねー』
「じゃ、もうひとつの使い方」

void CCalcDlg::OnBEqual() 
{
    m_iAns = 100;
    UpdateData( FALSE );
}

『ん？　とりあえずビルドして実行、321 って書いて【＝】ボタン、あれ？
アウトプットに何も出ないよ』
「そりゃ、TRACE() ないんだからそうでしょ」
『そうだけど……あれ？　エディットの数字が 100 になっちゃってる。水
希ちゃんイタズラしないでよ〜』
「だーかーら、そういうプログラムなんだって」
『へ？』
「 UpdateData( FALSE ) って呼び出すと、今度は m_iAns の中身をエディット
ボックスに書き込んでくれるの」
『あー、なるほど。だったら先に言ってくれればいいのに』
「まぁそうだけど。まとめると」

UpdateData( TRUE ) ： エディット ＞ メンバ変数
UpdateData( FALSE ) ： メンバ変数 ＞ エディット

「ってとこかな」
『TRUE ってのを入れるとエディットからで……あ〜なんか頭がこんがらが
る！』
「そうだね、これはまぁよくない例かな、メンバ関数の作り方としては。
はっきり言って僕もよく間違えるし」
『そうよねー。なんか憶え方ない？』
「あれ？　そういえば TRUE と FALSE って説明したっけ」
『使ったことはあるけど意味は分かんない』
「TRUE は〈はい〉、 FALSE は〈いいえ〉って意味」
『意味って言われても……』
「ＭＳＤＮの CWnd::UpdateData() のページ、見てみて」
『えっと、Ｆ１っと。あ、 FALSE か TRUE かって出てるね』
「だからそれ入れればいいってことで」
『あのねぇ……』
「正直なところ、結構この辺って複雑だし、こんどちゃんとまとめて教える
から、それまでは我慢してね」
『んー。で、憶え方は？』
「CWnd のメンバ変数にデータをアップデートする、って考えればいいんじゃ
ないかな。僕はそう憶えてるけど」
『で、TRUE なら〈はい〉だからメンバ変数に書き込んで、 FALSE なら〈い
いえ〉だから逆にエディットボックスに書き込む、っと。まぁ筋は通ってる
けど、逆に考えちゃいそうじゃない？』
「UpdateData() が CWnd のメンバ関数だから、 CWnd の視点で考える、み
たいな感じかな〜」
『なんかあいまいねー』
「ま、とりあえずこれでエディットボックスとの数字のやりとりはわかった
でしょ」
『うん。……もしかして？』
「とういうわけで、さっそく計算機を作っちゃいましょう！！」
『おー！』
「ちなみに訊くけど、どうやって作ればいいかわかる？」
『わかんない』
「ちょっとは考えなよ〜」
『はぁい。ん〜、ん〜、ん〜、わかんない』
「……まぁ最初は例がないと難しいかなぁ」
『難しい難しい』
「（じろり）」
『あう……』
「んじゃ、まずエディットボックスをあとふたつ貼り付けて」
『はーい。ダイアログエディタ開いて、エディットボックスをドラッグ＆ド
ロップっと。エディットボックス、全部で３つだよね』
「そうそう。で今作ったののＩＤを、 IDC_E_LH と IDC_E_RH にして」
『LH とか RH ってなに？』
「〈レフトハンド〉と〈ライトハンド〉、ようするに左側と右側だね」
『ってことは左側のエディットボックスを IDC_E_LH にしなきゃいけないっ
てことだよね』
「そういうことだね。もちろんあとで位置入れ替えてもいいんだけど」
『あ、そっか』
「分かってなかったか……。そしたらクラスウィザードで、今作ったエディッ
トボックスのメンバ変数作って」
『変数のタイプとかは int でいいんだよね。変数名は？　m_iLh とか？』
「そだね、 m_iLh と m_iRh でいいんじゃないかな」
『そしたら？』
「あとはいつものメンバ関数を書き換えるだけ」

void CCalcDlg::OnBEqual() 
{
    UpdateData( TRUE );
    m_iAns = m_iLh + m_iRh;
    UpdateData( FALSE );
}

『えっと、１行目でエディットのをメンバ変数に移して、２行目で足し算し
て、３行目でエディットに書き込む……あ〜、なーんだこんな簡単なんだ』
「そういうこと。 CWnd::UpdateData() を呼ぶタイミングさえ分かれば、あ
とはただの計算だから」
『なのねー。じゃ、ビルドして実行！　で、IDC_E_LH の方に 3 入れて、
IDC_E_RH の方に 5 を入れて、【＝】ボタン…… 8 って出た！』
「というわけで、これで足し算専用計算機は完成、だね」
『足し算以外は？』
「どうすればいいと思う？」
『わかんない』
「……」
『……あ、えっとねぇ、そうねぇ……よーするに + を - とか……あれ？　
かけるとかってなんだっけ』
「 * と / ね」
『そうそう。それに変えればなるんだから、たとえば【＝】ボタンじゃなく
て、【＋】ボタンとか【＊】ボタン作ればいいんじゃないかな』
「そんな感じだね。実際には〈正解〉なんてないし、誰も考えないような方
法でも人気が出て大ヒット、ってことも十分あり得るし」
『アイディア次第ってことよね』
「そういうこと！」

/*
    Preview Next Story!
*/
『残念なことに、計算機が完成したのでこれで皆さんとも……ううっ』
「終わんないって。まだまだ教えることたっぷりあるんだから」
『とりあえず次の予定は？』
「Calc プログラムをもっと精錬させるとか」
『ふーん』
「というわけで次回」
＜ Version 3.12 ダイアログを整えよう ＞
『につづく！！』
「あとフリーウェアの公開方法とか、アイコンの描き方とか」
『それ！！』



/*                       金菜さんの憂鬱                           */
http://www2.justnet.ne.jp/~kabstudio/Programing/KanaU/

初めに

　お久しぶり、でいいのかな。初めましての方もいるかもね。私は金菜、前
にホームページの方で「金菜さんの憂鬱」というページを書いていました。
９月の末にお休みしたけど、晴れてメールマガジンの方でリスタートするこ
とになりました。でも、前とちょっと形式が変わったんだけどね。

　前のホームページの時は「プログラミング日記」と「質問＆解答」、それ
に「プログラミング講座」を連載していました。来週から始めるこのコーナー
では、最後の「プログラミング講座」だけを載せていくつもりです。
　「プログラミング日記」と「質問＆解答」は、「マスター」が１２月２２日
からホームページの方でリスタートさせるから、心配しなくても大丈夫。ま、
流行の言葉で言えば「コラボレーション」ってところかもね。

　で、来週から始める「プログラミング講座」では、何かテーマを作って連
載していこうと思ってます。来週からのテーマは「アプリのツボ」。エディ
タを作ってみたい、ファイラーってどういう仕組みで動いてるんだろう、
っていうの、プログラミングを始めたばかりの時ってみんな疑問に思うよね。
　今回のテーマでは、そういう、アプリを作るためのとっかかりになるよう
な情報を載せていこうかなって思います。とりあえず来週はテキストエディ
タ、ね。

　この講座は毎週の連載だから、のんびりした感じになると思うけど、気長
に読んでね。



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

・プログラミング辞書単語受けつけ再開！
　皆さんお待ちかね！　プログラミング辞書の単語受けつけを再開します！
　今まで分からなかったあんな単語やこんな単語をどんどん送っちゃおう！！



/*                          ご注意！！                            */

・このメールを返信しないでください。
・感想はこのページから送ってください。
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 1999 ALL RIGHTS RESERVED.
        http://www2.justnet.ne.jp/~kabstudio/
        kab-studio@multimedia.design.co.jp
*/


/*                      See you next week!!                      */

