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

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

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


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

『じゃ、次のお便り』
「ってゆーかないんだよねー」
『やっぱり』
「できれば、購読登録を解除する前に、ひとこと言って欲しいかなー」
『でも、登録数は増えてるよね』
「だいたい週４０〜５０くらいずつ増えてるかな。でもときどき目に見えて
減ってたりするし……」
『それって変くない？』
「ま、まぐまぐの〈届かなかったら解除〉システムとかの影響もあると思う
けどね」
『じゃ、あんま気にしなくていーんじゃない？』
「相変わらず軽いな〜」
『私たちは 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/Info/News/

・金菜さんの憂鬱を一時休止。
　わたくし、鏑矢正伝は実は学生で、特に後期の授業は忙しくなる予定なの
で、更新量を落とします。御了承ください。
　で、金菜さんの憂鬱を１２月末までお休みします。あと辞書の単語受け付
けもお休みします（下記参照）。その他の更新量もがくんと減ると思います。
御了承ください。
　確実に続けるのは毎月の表紙イラスト、チョー普通な日記、KAB-studio.h
のみっつくらいです。


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

・ＫＴＬ更新！！
　お待たせいたしました！　KTLのブラッシュアップが完了、更新しました！
　今回はＪＡＶＡのようなイベントハンドラシステムや、ダイアログコント
ロールとのアクセスを行うストリームバッファなど、いくつかのクラステン
プレートを新たに装備しています。すべてのＷｉｎ３２プログラマーに役立
つはず！
　注意：かなり大幅なブラッシュアップを行ったため、これまでのＫＴＬを
使用していたコードはまず機能しません。御了承ください。




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

１９９９年９月１９日（日）：
　明日は１０万ヒットの記念日。８万＞９万は８週、９万＞１０万は７週で
達成。この分だと２０万ヒットも近いかも？

１９９９年９月２０日（月）：
　祝１０万ヒット！！　を記念して、かぶスタの開始当初を振り返ります。
かぶスタはどこから来てどこへ行くのか。

１９９９年９月２１日（火）：
　届く祝電の数々！　そして壊れたウィンドウ！　「ｘ」ボタンやポップ
アップメニューが化けた、再セットアップしかない？

１９９９年９月２２日（水）：
　さらに祝電。ヒット数を稼ぐ秘策をここに披露！　そして昨日の「壊れた
ウィンドウ」の証拠写真掲載！　このみょーに中途半端な壊れっぷりをご覧
あれ！

１９９９年９月２３日（木）：
　実験を明日に控え、勉強をする鏑矢正伝。正気かお前って感じー。

１９９９年９月２４日（金）：
　実験スタート！　やはり甘くなかった……彼に未来はあるのか！　そして
適切な助言によりウィンドウ復活！　そしてやっぱし今週もメダロット！
ああ、金曜は波瀾万丈（謎）。

１９９９年９月２５日（土）：
　ダイエーが優勝しちゃったよおぉぉぉ……。


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

１９９９年９月１９日（日）：
ＫＴＬについて
細かい部分の問題点
シグネイチャーの throw
はっきり言ってどう使えばいいのか分からない
コンパイラがちゃんと対応してくれれば
enum で値を再定義すべきか

１９９９年９月２０日（月）：
ＫＴＬについて
実行ファイルのサイズが１３２ｋｂと大きい
ＫＴＬを使わずに作ると２８〜７０ｋｂ
増える原因はテンプレートのせい
でも減る場合も
お便り
std::fstream から、FILE* を取得は？
プライベートメンバ関数だからたぶん無理
コードの複製を作ればあるいは
お便り
CD-ROM の選択
MCI_OPEN_PARMS::lpstrElementName かも

１９９９年９月２１日（火）：
ＫＴＬについて
密かに公開
ＫＴＬはソースコードを見てもらうことも重要
ライブラリを作ってみることは強くお奨め

１９９９年９月２２日（水）：
ＫＴＬについて
「ツールライブラリ」「オブジェクトライブラリ」「パーツライブラリ」
昔のライブラリは「ツールライブラリ」
クラスで構成「オブジェクトライブラリ」
標準Ｃ＋＋ライブラリやＭＦＣクラスの一部とＫＴＬはこれらとは別に区分
継承やテンプレートでアプリ用の「特化されたクラス」を作成
「プログラムの雛形になるライブラリ」が「パーツライブラリ」
ツールライブラリやオブジェクトライブラリは「特定の機能」しか持たない
各アプリごとに「特化された機能」は使う側で作る必要がある
アプリが巨大化して複雑化した場合、可読性が重要
コードを読みやすくするためのライブラリ、パーツライブラリが重要
お便り
複数CDを再生させる方法がわかった

１９９９年９月２３日（木）：
本日からお休み
再開は１２月末になる予定
そのときには色々と形式とか変わるかも
メールマガジンの方に移っちゃうかも……？
ＫＴＬはホントはフリーウェアのベースライブラリ用に作ってた
ＫＣＬ９５４２のアイコン付きメニューとかも移植しなきゃいけない
フリーウェア用に作るからこそ必要なものが揃えられる


/*                        #pragma twice                           */

　Version 2.14
いろんなライブラリ！


「前回は CWnd::MessageBox() とは別に MessageBox() って関数があるって
ことで終わりました」
『そーそー。メンバ関数と、普通の関数』
「その前に、プログラミングの世界について触れておきましょう」
『う、なんか堅そう』
「この Visual C++ で使うプログラミング言語は〈Ｃ＋＋〉っていうもので
す」
『しーぷらぷら、ね』
「ぷらすぷらすって発音する人もいるけど、まあそれはともかくとして、
Ｃ＋＋は関数の組み合わせでできてるって言いました」
『はい、いーましたー』
「ってことは、何をするにもまずは関数を呼ぶ、ってこと」
『そうよねー、文字を出すときには TRACE() 、ダイアログは MessageBox() 、
って感じだしねー』
「そういう、他から提供されている関数群を〈ライブラリ〉と呼びます」
『これもこの前したね』
「ということはつまり、ライブラリを知っていれば、たいがいのことはでき
る！　ってことです」
『おお！』
「で、とりあえずこれだけは！　っていうのが、次の３つのライブラリ」

・標準Ｃライブラリ（ランタイムライブラリ）
・Win32 SDK （ API ）
・Microsoft Foundation Class ライブラリ（ＭＦＣ）

『最後のしかしんない』
「うん、まだＭＦＣしか使ってないから。全部必要なライブラリだし、もと
もとＶＣに付いてくるから使いやすいしね」
『でもこんなにいっぱい憶えらんないし、憶えなくていいんでしょ？』
「それはそうなんだけど、必要なときにちゃんと使えるように、だいたいど
んな関数があるのか、雰囲気は憶えてないとね」
『雰囲気ねー』
「で、その〈雰囲気〉をさっそく紹介しましょう」
『うん。まず標準Ｃライブラリって？』
「Ｃ＋＋はＣっていう言語を拡張したものなんだけど、標準Ｃライブラリは
そのＣの時代のライブラリ」
『ってことは古いのってこと？』
「そういうこと。でも便利な関数が揃ってるんだよね。たとえば "3" って
文字列があったら、それを int 型の変数に入れるのってどうすればいいと
思う？」
『……こんな？』

void CCalcDlg::OnBEqual() 
{
    int iBox
        = "3";
}

『あ、ビルドエラー』
「型を考えてみ。文字列ってなんていう型だっけ」
『えっと……そうそう、 LPCTSTR ってゆーわけわかんないの』
「そ。このわけわかんないのと int じゃ型が違うわけ」
『だからダメだったんだ』
「というわけで、標準Ｃライブラリから atoi() というものを使ってみま
しょう。まず、このファイルの頭で <stdlib.h> というヘッダーファイルを
インクルードします」
『このヘッダーファイルに、 atoi() っていうのの…… atoi() だ使え！　
っていう宣言があるわけね』
「そのとおり！」

// CalcDlg.cpp : インプリメンテーション ファイル
//
#include <stdlib.h>

『あれ？　なんでダブルクォーテーションじゃないの？』
「ライブラリのファイルみたいに、他のフォルダにまとめて置いてあるヘッ
ダーファイルを指定するときにはこの < と >で囲んで、同じプロジェクト
にあるファイルは " で囲む、ってことになってます」
『 <> はライブラリの印ってことね』
「で、こんな感じに使います」

void CCalcDlg::OnBEqual() 
{
    int iBox
        = atoi( "3" );
    TRACE( "%d\n", iBox );
}

『ビルドして実行、あ、ちゃんと iBox に３入ってる』
「こんなふうに atoi() を使うことで、文字列を整数に変えられます。こう
いう〈ツール〉っぽいのが揃ってるのが、標準Ｃライブラリ」
『確かにこれは便利ねー』
「次のライブラリは Win32 SDK。正式名称はそうなんだけど、 API て呼び
方の方がよく使われるかな」
『うぃんさんにーえすでぃーけー、に、えーぴーあい。意味は？』
「 Win32 は〈ウィンドウズの３２ビット版〉って意味」
『え？　フツー３２ビットでしょ？』
「昔は１６ビットとか８ビットとかそーゆーのがあったわけ」
『へー』
「SDK は Software Development Kit の略。つまり〈ソフトを作るための道
具〉ってことだね」
『API は？』
「Application Programming Interface の略。つまり〈アプリを作るための
インターフェイス〉ってこと」
『〈インターフェイス〉略してない〜』
「ぎく、まあパソコンに付いてるコネクタをインターフェイスっていうで
しょ、あんなふうに〈アプリが何かする時に継なぐコネクタ〉ってとこかな」
『SDK と API 、意味的に違うよね』
「たとえばＵＳＢコネクタにマウスを継なげることを考えてみようか。パソ
コンは、マウスを使って操作できる〈道具〉だよね」
『そうなるね』
「このときＵＳＢは、パソコンを操作するためのコネクタ、つまり〈インター
フェイス〉になるわけで」
『つまり、注目してるとこが違うってこと？』
「そういうこと。SDK は中身、API は入り口を見てるってことで、基本的に
は同じものってこと」
『ああ、同じものってことなんだ』
「最初に言ったやん……」
『で、この API ってライブラリ、なんに使うの？』
「よくぞ訊いてくれました！！」
『な、なに？』
「これこそが、ウィンドウズアプリケーションを作るためにもっとも必要な
ライブラリなのです！」
『もっとも必要？』
「そう。ウィンドウを作ったり、ダイアログ表示したり、その他もろもろは
全部この API に入ってるってわけ」
『もしかして、 ::MessageBox() も、その API の？』
「そういうこと。ちなみに :: は着けなくてもいいんだけどね」
『じゃあなんで着けてたの？』
「着けるとその関数が API って分かるから。メンバ関数じゃない、ただの
関数を呼び出すときには関数の前に :: を着けるといいから」
『え？　なんでメンバ関数じゃないの？』
「API もＣ＋＋より前の時代に作られたものだから。Ｃ言語にはクラスって
なかったんだよね」
『へー、プログラミングの歴史って結構古いのねー』
「そう。で、Ｃ＋＋ができて、じゃあＣ＋＋用にしよう、でも API を作り
替えると前のプログラムが使えなくなっちゃうよ、じゃあ API を呼び出す
クラスを集めたライブラリを作ろう、ってことでできたのが」
『ＭＦＣ？』
「そういうこと。だから、 CWnd::MessageBox() っていう、API のと同名の
メンバ関数が存在して、その中で API を呼び出してるってわけ」
『なんかややこしいねー』
「簡単にまとめておこうか。標準Ｃライブラリはいろんなことをするための
ライブラリ。API はウィンドウを表示したりするためのライブラリ。ＭＦＣ
は API を間接的に呼び出すライブラリ」
『ってことは、何をするにしてもライブラリってことねー』
「さらに、ライブラリにはもっといろんなのがあるから。ＣＧを描くもの、
数学の計算をするもの、通信をするもの、もちろん僕や火美ちゃんがライブ
ラリを作ることもできるしね」
『そういうライブラリが集まって、必要なのを使っていって、なかったら自
分で作って、そうやってプログラムを作ってくんだ』
「だから、ライブラリをいかに使ってくかが大事。そうすればうんと楽がで
きるから」
『そりゃ、人の作ったもの使うんだから楽だろうけどさー、まだまだ先の話っ
て感じ』
「その、先の話」
『ん？』
「まず、バージョン２は今回で終わり」
『え！？　計算機作るって話は？』
「それはバージョン３で引き続き」
『じゃあ、なんで区切るの？』
「今回まではプロジェクト作って、簡単な計算して、if とかの使い方憶え
て、関数とライブラリについて勉強したでしょ」
『うん、したね』
「はっきし言って、ここまでできればあとは本とか見てけば結構いけると思
うよ」
『え、ホント？』
「ライブラリに入ってる関数の使い方、分かるでしょ？」
『うん、ヘッダーをインクルードするんだよね』
「それと、標準Ｃ＋＋ライブラリや API の情報もＭＳＤＮに書いてあるか
ら」
『あれあんま役に立たないんだけど……』
「そういうときはインターネットで全文検索。goo や infoseek で使いたい
関数を検索すれば、実際に使ってるプログラム例が出てくるでしょ」
『そういうふうにも情報集めたりできるんだ』
「で、あとは〈どの関数を呼び出せばいいのか〉が分かればいいわけで、こ
れは調べるしかないけどね。でもこれで、たいがいのことができそうでしょ」
『心許なくはあるけど、頑張ればなんとかなりそうな気がする。けど、まだ
続けるんでしょ？』
「もちろん。バージョン３ではクラスの使い方とか、ダイアログの使い方と
か、フリーウェアの公開の仕方とか、そういうのを中心に解説します」
『そのあとは？』
「そうだねぇ……あ、金菜先輩」
「プログラミングの勉強は進んでる？」
『えっとねー、今日は API ってゆーの憶えたよ』
「……水希クン、君教えるの遅すぎ」
「そうかなぁ……そうそう、金菜先輩ってホームページで質問に答えるコー
ナー持ってますよね」
「〈金菜さんの憂鬱〉のこと？　今お休みしてるのよね……」
『人の質問に答えられるの？　すごーい、よっぽど物知りなんだね』
「ううん、たいがい質問来てから調べるけど」
「よく間に合いますね」
「いい、プログラマーにとって一番必要なのは〈読解力〉よ」
『？』
「この世界にはいろんなライブラリがあるわけよね。その中に、質問の答が
入ってるってわけ。ライブラリを読み解く力があれば怖いものなしよね」
『でも、それってかなり大変じゃない？』
「読解力に必要なのは、アーキテクチャーと言語の知識」
「アーキテクチャーっていうのは〈構造〉って意味で、たとえば〈ウィンド
ウ表示のアーキテクチャー〉とかって使い方するかな」
『ってことは、ウィンドウを表示する中身ってこと？』
「中身とまではいかないんだけど、まあそういうこと。コンピューターや
ＯＳの仕組みを知っていれば、〈ライブラリで何を実現するのか〉が分かる
でしょ。そうすれば〈実現するための書き方〉に注目すればいいわけ」
「たとえば ::MessageBox() の呼び出し方で、 CWnd::MessageBox() の呼び
出し方と火美ちゃんが書いたプログラムとでの違い、みたいな感じかな」
『お前が好きだ！　と、うちおまえが好きやねん、の違いみたいな？』
「うーん、まあ、そうかも……」
「その違いを読み解くのに必要なのが、Ｃ＋＋言語の知識」
『Ｃ＋＋って、今日教わったのだよね』
「……水希クン、遅すぎ……」
「……」
「まあそういうことね。Ｃ＋＋について知っていれば、ライブラリが何を言
いたいのか分かるようになるから」
『え？　プログラムでも、意味とかそーゆーのあるの？』
「いいライブラリはしっかりと自己主張してくれるから、使いやすいのよ」
『へー、そういうものなんだー』
「アーキテクチャーの知識で何について言おうとしてるのか理解して、言語
の知識でどう表現しようとしているのか理解すれば、どんなライブラリでも
読み解けるってわけね。じゃ水希クン、しっかり教えてあげてね」
「あ、はい」
『……水希ちゃん？』
「あ、えっと、というわけで、バージョン４以降は、アーキテクチャーのこ
ととか教えていくことにします」
『なさけなー』


/*
    Preview Next Story!
*/
『もう最初から半年くらい経ってるのねー』
「やっぱ遅いのかなぁ……」
『ダメ！』
「な、なに？」
『これ以上早かったら憶えきれないもん！』
「……なんだかなー」
『というわけで次回』
＜ Version 3.1 クラスってもの ＞
「につづく！！」
『でも普通の本と比べるとかなり遅いよね』
「確かに……」
『あ、その本で分かんないとこを補習してくのにいいかも』
「うーん……」



/*            １９９９年１０月４日（月）の更新予定                */
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/start.html#MailMagazine

/*
    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!!                       */


