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

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

    送信日： 1999/04/19(Mon) No.003
    配信数： 1600（ Mag2 + Pubzine ）
*/


/*            １９９９年４月１９日の更新                */

・「ＫＴＬ」改変。
　ＫＴＬを少し変えました。インライン関数をクラステンプレート関数に変
更したり、フレームワーク用のグローバル変数なんかを作りました。あとサ
ンプルコードも新しくしました。なんか、内部的にはかなり変わっちゃって
ます。どーなっちゃうんでしょー（汗）。


・メールマガジンのページを更新。
　メールマガジンKAB-studio.hのページをちょっとだけ更新。まぐまぐさん
がバックナンバーのサービスを始めたのでそこへのリンクを加えました。見
逃しちゃったあなたはこちらをどうぞ。


/*                チョー普通な日記                */

１９９９年４月１１日（日）：
　眠くなくてＫＴＬいろいろは靴次第も考えれば考えず
ＣＣさくらはいい感じだけどヤマモトヨーコは難しく
サブカテゴリが鍵。


１９９９年４月１２日（月）：
　なんとなく眠く定期買ったら情報理論と制御工学と
エイリアン９は見つからずイラスト描いてかぶヘッダーの
登録減って１８０は複雑な気分。


１９９９年４月１３日（火）：
　なんとなく眠くオペリサは顔憶えられベル来て名刺失敗
２２０は工作技術とプログラミングの違い？


１９９９年４月１４日（水）：
　眠くてｉｅｄアカウント取ってＵＮＩＸと戯れて図書館
登録して授業受けてふみゃーんしてＣｏｏｌＳｉｇｈｔに
横田出てるから読んでね。


１９９９年４月１５日（木）：
　眠くてメストとファンロードとアレなビデオ２本と
テッカマンのビデオ買ったらテッカマン中身海闇
ピッチャーと発勁は金なく褐色のジョーイさんに
金ないって。


１９９９年４月１６日（金）：
　眠くても部屋の整理やコレクター・ユイにタクシー改善
とツッコミイラストは難しいのです。


１９９９年４月１７日（土）：
　ねむーいのＫＴＬや片づけやお絵かきそしてＣＣさくらそれだけ。



/*                    金菜さんの憂鬱                        */

１９９９年４月１１日（日）：
ＫＴＬのインライン関数をクラステンプレートに書き換え
サンプルコード
tFuncBaseClass<> と force_cast<>()
クラステンプレート関数
問題ふたつ
関数のオーバーロード時に戻り値が複数出るときに対応できない
戻り値に void を使えない
いい点
分割関数をプライベート関数に
未知数の部分が多い


１９９９年４月１２日（月）：
ＫＴＬ用サンプルを手直し
小ネタのサンプルコード
クラス名を typedef してコンストラクタに
クラス名を変えても大丈夫
質問のお便り
キーボードフックと DOS 窓と GetForegroundWindow() == NULL
キーボードプロシージャはメッセージループがないと呼ばれない
解決策は「メッセージループに送られる前に取得する」
ジャーナルフックかデバイスドライバ？


１９９９年４月１３日（火）：
クラステンプレート関数の問題
インテリセンス
クラスビューにクラステンプレート関数が並ぶ
ＫＴＬサンプルの SDK02 が完成
たすかぶやうちかぶを作っていく予定
シェルエクステンションとかの強化はゆっくり


１９９９年４月１４日（水）：
ＵＮＩＸプログラミング
gcc for win32 の経験
mule と gcc Test.c -o Test
キー配置の違い
Ｃ＋＋コードは cout とネームスペースがダメ
テンプレートは使える
XCreateSimpleWindow()
gcc XLib.cpp -o XLib -lX11


１９９９年４月１５日（木）：
分かりやすいコード
標準Ｃ＋＋ライブラリは分かりにくい
ＭＦＣは少しマシ
分かりやすいコードは難しい
クラステンプレート関数とか
「知っていれば」
ＫＴＬは「使える」ライブラリを目指すべき？


１９９９年４月１６日（金）：
static 変数
行自体が一度しか呼び出されない
たった一度だけ呼び出される関数
お便り
DrawText()
半角文字列が改行されない
英語と日本語の改行方法の違い
単語と認識されればちゃんと改行される
文字数を減らしつつ DT_CALCRECT 


１９９９年４月１７日（土）：
標準入出力
stdin というファイル
static 変数はメンバ関数の中でもたった１度の初期化
「 static メンバ変数」はヘッダーだけで記述できない


/*                    #pragma twice                        */


　Version 1.0
アプリケーションって、なに？


「では、今日からプログラミングの授業を始めます」
『やったーっ！！　どんどんパフパフー！』
「そんなにうれしいもんかなぁ。とりあえず今日は、一番最初の話、アプリ
ケーションについて見ていきます。じゃぁ火美ちゃん、アプリケーションっ
て何か分かる？」
『なめないでよねー。こういうファイルのことでしょ？』
　マウスカーソルが動き、フォルダ上の Kami.exe をクリックする。
『こういう、拡張子がＥｘｅのファイルがアプリケーションでしょ。あと色々
と必要みたいだけど、基本的にはこれが中心、って私自身のことだし』
「そうだね、ちょっと紛らわしいから、このＥｘｅのファイルを＜実行ファ
イル＞って呼ぶことにするね。じゃ、＜テキストファイル＞は何か分かる？」
『それはこれでしょ？』
　今度はデスクトップに置かれた Memo.txt をダブルクリックする。エディ
タが起動し、文章が表示される。
『こういう、文字がいっぱい入ってる、拡張子がｔｘｔのファイルが、テキ
ストファイルでしょ？』
「……これからは勝手に人のファイルを見ないように」
『はぁい』
「さて、じゃぁこの＜実行ファイル＞と＜テキストファイル＞の違いは？」
『拡張子！！』
「じゃ、やってみようか」
　水希は Memo.txt を Memo.exe に変えて、ダブルクリックする。
        ＜C:\Windows\Desktop\Memo.exe は
            有効な Win32 アプリケーションではありません＞
『こうなると思ったのよねー』
「だったら先に言えっちゅーに！　で、どう思う？」
『そうねー、その前に、実行ファイルの拡張子をｔｘｔにしてみたいんだけ
ど』
「お、いいとこ突いてくるねー。じゃ、これ使ってしてみ」
　マウスカーソルが動き、デスクトップにコピーされた Test.exe を
Test.txt に変更する。そしてダブルクリック。テキストエディタが開き、
わけのわからない文字が並ぶ。
『なんか変な感じ。空白とか、＜・＞とか、半角カタカナとか、色が反転し
てたりとか、あ、でも普通の文もあるね、＜This program cannot be run 
in DOS mode.＞って、＜このプログラムはＤＯＳじゃ動かないよん＞って意
味だよね』
「そういうこと。わけ分からない部分もあるし、分かる部分もある。この辺
に少し鍵がある、ってところで、今度は＜バイナリーエディタ＞でファイ
ルを開いてみるね」
『バイナリーエディタ？』
「そ。＜バイナリー＞っていうのは＜素のデータ＞っていう意味」
『えー？　なんか違ってそう。＜バイ＞って＜バイリンガル＞とかの＜ふた
つ＞って意味でしょ？』
「ちゃんとした意味は今度教えてあげるから。バイナリーエディタでファイ
ルを開くと、ファイルの＜そのままの中身＞が見られるんだ。こういうテキ
ストファイルを用意したから」
　フォルダ上の Binary.txt をダブルクリックして、テキストエディタを開
く。中には、

abcdefghi

とだけ書かれていた。
「これをバイナリーエディタで開いてみると……」
　水希は Visual C++ を起動し、【ファイル】−【開く】のダイアログを開
いて、【ファイルの種類】を【テキストファイル】にし、【読みとり専用ファ
イルとして開く】をチェックし、【用途】を【バイナリ】にしてから、
Binary.txt を選択して【開く】ボタンを押した。画面上に数字が並ぶ。

000000      61 62 63 64 65 66 67 68  69                  abcdefghi

『なんか、数字が並んでるね。右のはテキストファイルの文字だよね。テキ
ストファイルの中にふたつのデータが入ってるってこと？』
「ちゃうちゃう。左のは、ただの行番号、つまり＜ファイルのどこらへんの
データか＞。で、真ん中のが、テキストファイルの中にあるデータ。右のは、
それを＜テキストエディタがするように変換した結果＞を表示しているだけ」
『ってことは、テキストファイルの中には真ん中の数字しか入ってないって
こと？　ウソだぁ！』
「まーそう思うのももっともだと思うけどね。ファイルの中は、こんな風に
数字がいっぱい入ってるんだよ。それを、テキストエディタは文字に変換し
て、人間にとって分かりやすい形で表示しているだけ」
『 61 が a、62 が b、つまり、
数字： 61 62 63 64 65 66 67 68 69 を、
文字： a  b  c  d  e  f  g  h  i
っていうふうに変換するってことなのね。そういえば数字、並んでるし』
「そゆこと」
『……ねぇ、この数字をテキストエディタに張り付ければ、あの文字が出て
くるかな』
「出てこないんだなー、これが。やってみ？」
　マウスカーソルが動き、新しいテキストファイルを作成して数字の羅列を
張り付ける。

61 62 63 64 65 66 67 68 69

　一度閉じて、また開く。

61 62 63 64 65 66 67 68 69

『私ってバカかも……』
「でも着眼点いいかもよ」
『ね、さっきのバイナリーエディタっていうの、使ってみていい？』
「もちろん。最終的には火美ちゃん自身で使いこなせるようになって欲しい
から、今のうちに慣れておいて」
『？　よくわかんないけど、使ってみるね』
　先ほどと同じようにダイアログを開き、先ほどのテキストファイルを開く。
『えっと、
行番号：000000 で、
データ：36 31 20 36 32 20 36 33 20 36 34 20 36 35 20 36 で、
それを変換した文字列が、61 62 63 64 65 6
あ、なーんだ、要するにこの数字が文字になっちゃってるってことか。って
ことは、36 の文字が 6 の文字で、 31 が 1 の文字で…… 20 は？』
「それはスペース」
『スペースも文字なの！？』
「そうだよ。スペースだけじゃなくて、改行とか、タブとかも全部数字が割
り当てられてるから」
『へー。だって、＜文字がない＞んだから、数字にしなくてもいいじゃない』
「うーん、そうだねー、あとでちゃんと説明するけど、ビーカーみたいなも
のかな」
『ビーカー？』
「そ。水の入っていないビーカーは＜０ミリリットル＞って表せるでしょ。
つまり＜空＞を数字で表せる。それを単に２０に置き換えてるだけ、ってと
ころかな」
『パソコンの中にビーカーみたいなのが入ってるの？』
「まぁ、そんな感じかな。ファイルは、さっき見た＜数字＞が入る入れ物が
あって、それがずらっと並んでて、そこには必ず何かの数字が入ってるから」
『だからスペースも数字で、ってことね』
「で……何の話してたんだっけ」
『そうよー、なんで実行ファイルは動くのか、説明してよ』
「そうそう。じゃ、さっきの Test.exe を、バイナリーエディタで開いてみ
ようか」

00000   4D 5A 90 00 03 00 00 00   04 00 00 00 FF FF 00 00
00010   B8 00 00 00 00 00 00 00   40 00 00 00 00 00 00 00
00020   00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00
00030   00 00 00 00 00 00 00 00   00 00 00 00 B8 00 00 00
00040   0E 1F BA 0E 00 B4 09 CD   21 B8 01 4C CD 21 54 68

　以下続く……。
『やっぱよく分かんないよね』
「じゃ、もうひとつ、 Test2.exe 、これも開いてみようか。

00000   4D 5A 90 00 03 00 00 00   04 00 00 00 FF FF 00 00
00010   B8 00 00 00 00 00 00 00   40 00 00 00 00 00 00 00
00020   00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00
00030   00 00 00 00 00 00 00 00   00 00 00 00 B8 00 00 00
00040   0E 1F BA 0E 00 B4 09 CD   21 B8 01 4C CD 21 54 68

『あれ？　まったく同じじゃない、これ。わかったー！！』
「ん？」
『 Test2.exe って Test.exe からコピーしたんでしょー、水希ちゃんの手
抜きー』
「ちゃうっ！！　両方とも別の実行ファイル！！」
『そこまで怒んなくてもいーじゃない。つまり、実行ファイルの中は、全部
こういう風になってる、ってことでしょ？』
「なんだ、分かってるんだ」
『ボケただけよ』
「でもつまんない」
『うるさいわねっ！！』
「ま、正解。実行ファイルの頭の部分には、こういう風に特殊な形式、特別
のデータが入ってて、この中に＜このファイルは実行ファイルですよ＞って
いう情報とかが入ってる」
『から実行できる、ってわけね』
「そゆこと。これはただのデータだから、文字に変換できない数字とかあっ
て、そういうのはテキストエディタじゃ表示できないから」
『ねー、バイナリーエディタってさ、エディタっていうくらいだから、この
データ、書き換えられるの？』
「変えられるよ」
『ってことはね、このバイナリーエディタを使えば、それでアプリケーショ
ンが作れるってことよね』
「作ってみる？」
『……めんどそう』
「でしょ。だから、こういう面倒な部分は自動的に処理して、他の、普通の
文章として分かりやすい部分だけを作る。これが、＜プログラムを組んで、
アプリケーションを作る＞ってこと」
『それをこれから学ぶってこと！？　ってことはその前の説明だけでこんな
長いの！？　これからもっともっといろんなこと勉強するの！？　めんどく
さー！！』
「……」



/*
    Preview Next Story!
*/
『面倒！！　もーヤダ！！　クニに帰らせてもらいますっ！！』
「そりゃプログラミングは一朝一夕じゃできないよ。でもアプリケーション
を作ること自体は、次の回でできるようになれるよ」
『ってことは私がアプリケーション作れちゃうの？』
「作るだけならね」
『何よ、その意味深な言い方はー』
「というわけで次回、」
＜ Version 1.1 とりあえず作ってみよう！！ ＞
『も読むベシ読むベシ！！』
「ま、楽にプログラミング学ぼうってのが間違いなんだけどね」
『じゃ、私は絶対楽にマスターしてみせるっ！！』



/*            １９９９年４月２６日の更新予定                */


・未定……。
　今のところ予定は未定。もしかしたらＣｏｄｉａｎに数ページ追加できる
かもしんない。でもどーかなー。





/*                おくづけのようなもの                    */
/*

　本誌のバックナンバーはホームページ上にはありません。まぐまぐの

http://bigbeat.tegami.com/~mgsearch/frame.cgi?id=0000012198

　にありますのでそちらをどうぞ。

*/
/*

　このメールマガジンの購読登録を解除する場合には

http://www2.justnet.ne.jp/~kabstudio/Info/MailMagazine/start.html

　が便利です。また、購読解除についての詳しい情報は、
登録時に送られてきた「まぐまぐ」もしくは「Ｐｕｂｚｉｎｅ」からの
メールをお読みください。

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


