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

    (C)KAB-studio 1999 - 2000 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com

    送信日： 2000/04/03(Mon) No.051
    配信数： 3590（ Mag2 + Pubzine ）
＊    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/

/*                          祝・一周年！                          */

『しゅく、いっしゅーねんっ！』
「１９９９年４月５日に発行した第１号から、はや５０号、１年間が経ちま
した！」
『早かったような短かったような』
「同じやねん」
『これもひとえに皆さんのおかげ！』
「ありがとう！」
『で、祝ってくらいなんだからなんかお祝いするんでしょ！？』
「……最近忙しいし、何したらいいかも分からないし、とりあえず今回はパ
ス」
『え”え”〜っ！？』
「そのうがいするような声やめて……」
『せっかくの１周年なのにー。なんかちょーだい』
「ってゆーか、ホントは僕らの方から読者の皆さんに何かあげるべきなん
じゃないかなぁ」
『んなのいーのよ、タダなんだし』
「強気だなぁ。最近購読登録数、あんまり増えてないのに」
『う”、それ言われると痛いね……』
「ま、具体的なプレゼントはあげられないけど」
『よりいっそーがんばります！』
「かぶスタ本コンテンツもそうだし」
『ぷらとわやかなゆ〜も』
「量質共にパワーアップしていきたいと思います」
『ってなわけで、今年度も KAB-studio.h をよろしくぅ！！』


/*                ２０００年４月３日（月）の更新                  */
http://www.kab-studio.com/Info/News/

・祝 KAB-studio.h １周年！！
　ＫＡＢ−ｓｔｕｄｉｏの更新報告と #pragma twice を連載し続けてきて
早１年！　かぶスタメールマガジン KAB-studio.h が１周年を迎えました。
　１周年を記念して、縮刷版を用意しました（汗）。今回は１〜５０号です。
ダウンロードはフリーウェアインフォメーションルームにて。

[フリーウェアインフォメーションルーム]
http://www.kab-studio.com/Freeware/


/*              ２０００年３月２９日（月）の更新                  */
http://www.kab-studio.com/Info/News/

・STL & iostream 入門配信開始！！
　新しいメールマガジン「 STL & iostream 入門」の配信を開始しました。
　２９日に配信したものは #00 、ちゃんと送れるかどうかなどをチェック
するためのプレ配信です。あんま面白くない内容です（爆）。
　本配信は４月５日から。それまでには購読登録しましょう！

[ STL & iostream 入門]
http://www.kab-studio.com/Programing/STLiostream/


/*                        チョー普通な日記                        */
http://www.kab-studio.com/nikki2/

2000/03/26 (Sun)
　貴闘力優勝！　そして「変数名に $ が使える」ことが波乱を呼ぶ。

2000/03/27 (Mon)
　ビデオの整理をして、それがまったく終わらなくて、しかもデッキが壊れ
る（泣）。そんな感じで１５万ヒット。

2000/03/28 (Tue)
　日記にイラストを載せるのも久しぶりやねぇ。そしてデッキを修理に出す。
あとダイガード最終回。

2000/03/29 (Wed)
　リクルートスーツ（笑）を引き取りがてら遊びに。あとリヴァイアス最終
回。

2000/03/30 (Thu)
　なんか疲れてのんびり。ここ最近疲れてるかも……。

2000/03/31 (Fri)
　ブルージェンダー最終回。今クール、一番いい出来だったでしょう。あと
火山でターンＡガンダムが（泣）。しかしホームページは迅速だった。

2000/04/01 (Sat)
　西武初戦サヨナラ勝ち！！　松坂に不安あるも、打線はパワーアップ！
今年の西武は総合力で勝つ！


/*                         鏑矢の憂鬱                             */
http://www.kab-studio.com/Programing/KabuU/

2000/03/26 (Sun)
お便り
_WIN32_WINNT を 0x0500 に定義
-D_WIN32_WINNT=0x0500 
マクロの関係かも

2000/03/27 (Mon)
お便り
昨日の通りしてみるもうまくいかず

2000/03/28 (Tue)
辞書に送られてくる単語「ありますよー」多すぎ
お便り
「定義されていない識別子」は AnimateWindow() と AW_BLEND
Build Environment をダウンロード
実行中リンクならうまくいった
それが一番かも
インクルードファイルの優先順位が効かない
マクロがうまくいかない

2000/03/29 (Wed)
けしかぶのバージョンアップに着手
ライブラリもビルド
KTL を少しずつ
お便り
"stdafx.h" の前に <winuser.h>
謎

2000/03/30 (Thu)
けしかぶのバージョンアップ
バグはあっさり解決
CRecentFileList を使わずに処理
見れば見るほど書き換えたくなる
インターフェイスを CppSL したくなる
サンプルうまく作れなかった
お便り
BCB5
メンバ関数テンプレートが使用できる
使い勝手はあまりよくない
VC からの変換ツールが使えない
BCB5 の狙い目が VC と違う？

2000/03/31 (Fri)
ぷらとわ書き
どんどん増える
VC だとポインタを教えるのが楽
アドレスからメモリを直接見られるから
かなゆ〜を２話書く
アプリのツボ終了
そのあとは「オブジェクト指向概略」の予定

2000/04/01 (Sat)
お便り
BCB
ライブラリは使いやすい
ヘルプを HTML 化して欲しい
VC はコンパイラの標準化が問題
for の問題
MFC もアレ
コンポーネントや VCL が売り？
文字コード
CWnd や CWindow はヒドイ
gcc ？


/*                       今週の追加単語                           */
http://www.kab-studio.com/Programing/Dictionary/

・追加単語：
Exchange Server バイト バイトオーダー ディレクトリ フォルダー 
共有 プロジェクト ワークスペース Delphi Visual Basic Visual C++ 
シンタックス セマンティクス SQL

・今週のごめんなさい
winmain crt ライブラリ path STL ７バイト CGI ビットマップ ＯＤＢＣ
アドレス帳 com インターフェース コールバック LPCTSTR set VB 
関数へのポインタ nmake ワーカースレッド GUID sendmessage 

　今週は「ありますよー」多すぎ……。単語追加用ページを別に作った方が
いいかも。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『ねー、for とか while とか if って、なんか気の抜ける発音よね』
「ふぉー、ふぉわいる、いふ、確かに……」
『なんか集中力途切れそう』
　途切れるあなたは購読登録。
http://www.kab-studio.com/Programing/STLiostream/
_______________________________________________________________[KCM]


/*                       #pragma twice                            */
http://www.kab-studio.com/Programing/PragmaTwice/

　Version 4.01
テストアプリの準備

『新章突入！』
「というわけで、今回から細かい部分について見ていきます。まずは、テス
トアプリの作り方から」
『テストアプリ？』
「たとえば、まだ使ったことのない MFC のクラスをフリーウェアに使いた
いと思ったとします」
『うん、思った』
「そういうときは、いきなり使うんじゃなくて、まずどんな感じかテストし
ます」
『試運転って感じねー』
「そういうテストをするためのが〈テストアプリ〉。今回は、いつも僕がし
てる方法を紹介します」
『それって一般的なの？』
「さあ。〈テストアプリを作る〉ってこと自体あんまり広まってないような
気がするんだけど、僕は大事だと思うから」
『まー試運転は大事よね』
「さて、まずは昔を思い出しつつプロジェクトを作成してみましょう」
『おー！　えっと、まずメニューから【ファイル】−【新規作成】っと』
　【新規作成】ダイアログが表示される。
『【プロジェクト】のページを開いて……【 MFC AppWizard (exe) 】で
いーの？』
「うん、いいよ。プロジェクト名だけど、〈テストアプリ〉ってことが分か
る名前がいいかな」
『んじゃ TestApp とか？』
「テストアプリってこの先いっぱい作るから TestApp01 みたいにした方が
いいかな」
『んじゃ番号付けて TestApp01 っと。【位置】はこの前のと同じ……じゃ
なくて、テストアプリっていっぱい作るんだから、専用のフォルダとか作っ
といた方がいい？』
「そだね」
『んじゃ作ってそこに位置をセット。そして OK ！』
　ダイアログが【 MFC AppWizard - ステップ１】に変わる。
『種類は？』
「今回もダイアログ」
『んじゃ【ダイアログ ベース】っと』
「そしたら終了」
『あら早いね。んじゃ終了』
　【新規プロジェクト情報】のダイアログが表示される。
『 OK っと』
　ダイアログエディタにダイアログが表示される。
「まず【 TODO 】コントロールと【 OK 】ボタンを削除して」
『ええっ、【 OK 】ボタン要らないの？』
「今回はテストアプリだからね。【キャンセル】ボタンさえあればいいから」
『はーい』
「で、そのキャンセルボタンは右下に」
『右下ねぇ』
「そしたらダイアログの形が縦長になるように横幅を狭めて」
『狭めて……』
「そしたら新しくボタンを左上に貼り付けて」
『【コントロール】ツールバーからボタンをドラッグアンドドロップ』
「ボタンの横幅を、ダイアログいっぱいまで広げて」
『横長ボタンにするってことね』
「ボタンのキャプションを【最初のテスト】に」
『右クリックメニューの【プロパティ】開いて、キャプションを書きかえて』
「そしたらボタンの右クリックメニューから【イベント】」
『イベントっと』
　【クラス CTestApp01.Dlg 用の Windows メッセージおよびイベント ハン
ドラの新規作成】ダイアログが表示される。
「そのままの状態で【追加と編集】ボタン押して」
『あ、ボタン押したときに呼ばれる関数、作るんだ』
　【メンバ関数の追加】ダイアログが表示される。
「そのまま OK 」
『 OK! 』
　テキストエディタが開き CTestApp01Dlg::OnButton1() の中の TODO が選
択状態になっている。
『なるほど、このメンバ関数の中でテストするんだ』
「惜しいけど、ちょっと違うんだよね」
『そなの？』
「 CTestApp01Dlg::OnButton1() の中とそのちょっと前、こんなふうにして」


////////////////////////////////////////////////////////////////
//    最初のテスト。

namespace B1
{

void Test()
{
    // TODO
}

}    // B1

void CTestApp01Dlg::OnButton1() 
{
    B1::Test();    
}


『ななななな、なんかよく分かんないんですけど……』
「そうだね、 namespace とか初見だよね」
『うんうん』
「じゃ、順を追って見てみましょう。えっとまず、基本的には【１ボタン
１テスト】って形」
『ってことは、テストしたいことができるたびに、ボタン貼って、ハンドラ
作って、って感じにすんのね。でもなんでメンバ関数の中に書かないの？』
「テストするときには〈自分でクラスを作る〉とかすることもあるからね」
『ええっ、 MFC みたいなクラス、自分で作るの！？』
「将来はね。クラスは関数の中に作れないから、テストも含めて、メンバ関
数の外ですることにします」
『それってつまり、 Test() って関数の中でするってことだよね』
「そういうこと」
『じゃーそのまわりのはなに？』
「 namespace のことだね。 Test() 関数が { と } で囲まれてるでしょ」
『うん囲まれてる』
「【 namespace 苗字】ってしてから、 { と } で関数やクラスを囲むと、
囲んだクラスや関数に【苗字】を付けられます」
『関数に苗字！？』
「この例だと苗字はなんになる？」
『 namespace のあとのだから、 B1 ってのが苗字だよね。……あ！』
「そう、 CTestApp01Dlg::OnButton1() の中で B1::Test() ってしてるよね」
『これって、苗字付きで Test() 関数を呼んでるってこと？』
「そういうこと。この namespace を使った方法を〈名前空間〉って言いま
す」
『なまえくうかん？』
「そ。苗字で包まれた空間、ってとこかな」
『でもさ、これってどんな意味があんの？』
「というわけで、もうひとつボタン貼って、イベントハンドラ作ってみて」
『はーい。えっと、ダイアログエディタを表示して』
「さっき貼り付けたボタンを【 Ctrl 押しつつドラッグ】で複製作ると楽だ
よ」
『お、ホントだ。キャプションは【２番目のテスト】にして、メニューから
【イベント】っと、んでボタン２回押して』
　 CTestApp01Dlg::OnButton2() が作成される。
「そしたらこのメンバ関数のまわりをこんなふうにして」


////////////////////////////////////////////////////////////////
//    ２番目のテスト。

namespace B2
{

void Test()
{
    // TODO
}

}    // B2

void CTestApp01Dlg::OnButton2() 
{
    B2::Test();
}


『さっきのとかなり似てるね。違うのは、メンバ関数が OnButton2() にな
って、あ、【苗字】が B2 になった。で……関数の名前は同じだね』
「そう、関数の名前は同じ。でも、苗字が違うでしょ」
『うん、 B1::Test() と B2::Test() って。あ、これって別々の関数？』
「そういうこと。普通、同じ引数と名前の関数ってひとつしか作れないんだ
けど、名前空間を使うと」
『苗字が違うから、別の関数になるんだ』
「こういうテストアプリだと、テスト用の関数にわざわざ違う名前付けるの
って面倒だからね」
『そう？　たとえば B1Test() とか B2Test() とかでもいいんじゃない？』
「関数ひとつならいいけど、ひとつのテストでいっぱいクラスや関数を作る
となると大変だからね」
『そっか』
「それに、テストで作ったものをあとでフリーウェアに使う場合とか、テス
トをやり直しするためにコピーしたりするときとかには、名前空間使った方
が楽だと思うよ」
『なるほど』
「あとは、雑誌とかのプログラムをテストするんでコピーするときとか……」
『はいはい、使えるのは分かったから。で、実際どんなテストすんの？』
「じゃ、次回のテスト」


void Address()
{
    char ch = 1;
    TRACE( "%d, %X\n", ch, &ch );
}


『？？？』
「ま、中身の解説は来週にして、今回はこの関数そのものについて。次回か
ら、こういうふうに〈テストをする関数〉だけ載せます」
『それをどう使うの？』
「たとえばさっきの Test() の代わりに置き換えてください」

////////////////////////////////////////////////////////////////
//    アドレスのテスト。

namespace B1
{

void Address()
{
    char ch = 1;
    TRACE( "%d, %X\n", ch, &ch );
}

}    // B1

void CTestApp01Dlg::OnButton1() 
{
    B1::Address();
}

『ほー』
「 Test() の部分を残して、 Test() から Address() を呼んでもいいけどね」 
『２度呼ぶのって無駄な気もするけど……』
「ま、好きな方を選んで。重要なのは、テスト用関数は名前空間の中に、っ
てことだね」
『はーい』

/*
    Preview Next Story!
*/
『で、 Address() ってなにしてんの？』
「まずはコンピューターの中身を見てみようと思って」
『というわけで次回』
＜ Version 4.02 メモリを見よう！ ＞
「につづく！！」
『でもメモリなら見られるよ？』
「ってなんか懐かしいネタ振りだなぁ」
『って懐かしがんないでボケてよ』


/*                       金菜さんの憂鬱                           */
http://www.kab-studio.com/Programing/KanaU/

アプリのツボ
#14 通信　その１

　今のフリーウェアやシェアウェアはインターネットで公開するのがほとん
どだから、必然的にインターネット関係って多くなるのよね。それだけ開拓
されているから、新しく何か作るのは大変かも。狙い目としたら、新しい
アーキテクチャーができたときに乗っかるとかかな。

　通信用アプリを作るには、まず「 RFC 」を読むことが重要。 RFC は通信
関係の正式なドキュメントで、たいがいのことは載っています。基本的には
英文だけど、日本語訳をホームページに掲載している方や、分厚くて高いけ
ど、本としても日本語訳が出ているから、そういうのを活用するのがいいか
な。
　RFC に載っているのは、通信を行う上でのルール。これを「プロトコル」
っていいます。プロトコルに則っているからこそ、違う種類のコンピュー
ターが相互に通信できるってことね。一概にプロトコルって言っても、デー
タの分け方みたいなものから、テキストデータとしてのコマンドの一覧みた
いなものまで幅広く決められているから、「プロトコル」って言葉は広義な
単語として捉えた方がいいかもね。
　もうひとつ大切なことが、どのライブラリを使うかってこと。今まで何度
も言ってきたけど、「実際にハードウェアレベルでの通信を行う API 」が
使えさえすれば、だいたいのことはできるようになるから、まずは徹底的に
使いこなせるようになるのが大事かな。ウィンドウズだと Winsock ってい
う API が用意されているし、 MFC にもクラスが用意されているから、そう
いうのを使ってみてね。

　以上が、通信アプリの下準備。あとは「どんなアプリを作るか」ね。これ
は来週。じゃね。


/*            ２０００年４月１０日（月）の更新予定                */
http://www.kab-studio.com/Info/News/

・更新予定なし。
　とりあえず予定ありません。もしかしたら飛び入りで何かするかもしれな
いけど……まーガッコ始まってすぐなんで、特に何もできないかもしれない
んで。


/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.com/nikki2/
・プログラミングに関する質問は[鏑矢の憂鬱]にお送りください。
http://www.kab-studio.com/Programing/KabuU/
・購読登録を解除したいときにはこのページで行なってください。
＊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://www.kab-studio.com/Freeware/

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

    (C)KAB-studio 1999 - 2000 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/


/*                      See you next week!!                      */


