////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


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

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

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

・３月表紙壁紙！
　毎月恒例、新しい表紙壁紙です。今回はエアブラシ塗り。手抜きとも言
う（爆）。ダウンロードは CG Gallery にて。
[ CG Gallery ]
http://www.kab-studio.com/CG/Gallery/


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

2002/02/24 (Sun)
　たった１日の休日をあっという間に消化。昼寝したし。 Java メルマガの
次の案は LMN 、小説。ショートストーリーの練習って感じで。

2002/02/25 (Mon)
　テスト仕様書作成開始。ステップ数も計ったし。そんな感じで忙しい〜。
そして世界へ貢献。とりあえず性格直さないと。

2002/02/26 (Tue)
　スケジュール決定。土日出勤決定。来期勤務も決定。何もかも決定。
だぁ！だぁ！だぁ！最終回はいい感じ〜。 Java メルマガのページ、更新し
忘れてました……。

2002/02/27 (Wed)
　テスト仕様書書いてるだけなんで強烈に眠くなる。だからかネガティブ
モード？　成恵の世界いい感じだ。 VS.net バージョンアップ、加えて 
Maya パーソナルラーニングエディション登場。使う暇ないけど。

2002/02/28 (Thu)
　さらにテスト仕様書書き。なにげにあっという間に時間が過ぎる。 
MONSTER 最終巻。名作でしたなぁ。そして PC ラジオの世界。これはいいか
もしんない。

2002/03/01 (Fri)
　テスト仕様書のレビュー、それだけ。ホントにそれだけだ……。

2002/03/02 (Sat)
　土曜日もお仕事。テスト仕様書を修正して、プログラミングして、てんて
こ舞いして。はぁ。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
http://www.kab-studio.com/Novel/Fuga/

■　第三章　きもち　−１０−

　喫茶店の中で三人はコーヒーを待っていた。そこは舞がよく行くような喫
茶店ではなく、たばこの臭いが染みついた暗いスペースだった。とはいえ、
二階にあるその喫茶店は道路側に面した壁がすべてガラス張りになってい
て、外側に座った俊雄は下を流れる人波を眺めていた。
「戸辺誠十郎……さん？」
　その名前と「ライター」という肩書き、電話番号のみというシンプルな名
刺を見ている間に、その誠十郎はたばこに火を点けていた。俊雄はその行為
に露骨に嫌悪感を表していたが、舞はそんなことは構わずに質問を始めた。
「……雅樹が人を殺したって、本当のことですか？」
「ああ」
　灰皿に、灰が落ちる。
「俺の親父を、あいつは殺した」
　その言葉を聞かなかった振りをして、ウェイターはコーヒーを置いていっ
た。
　俊雄は下を見たままだった。舞は、誠十郎の目を見据えていた。その瞳
は、続きを話すようせかしていた。
「……ずっと昔の話だ。俺はまだガキだった。親父は刑事だった。ま、戦後
のまだじめじめとしていた時だ。どんなもんかたかが知れてるがな」
　懐疑心たっぷりの目を俊雄は向ける。舞は、さらに話を求めていた。
「俺はホントに小さなガキだった。だがな、決して忘れられないことがあ
る。親父は、何度かあいつを家に招待してた」
「あいつって、雅樹のことですか？」
「ああ。真っ赤なシャツ一枚で、隆々とした筋肉を見せつけていた。俺に
とっちゃ親父は何者よりも怖かった。だが……」
　誠十郎の顔が、強張った。
「あいつよか、何十倍もましだ。やつの目は人の死を何とも思っちゃいない
目だ。あいつが立ち去ったあと、親父はいつもほっとしていた。誰にも見せ
られない顔だった」
「朴さんは、なんであなたの父親に会いに来たんですか？」
　誠十郎はその俊雄の言葉の棘に気づいていないようだった。
「利用していた……というより、協力してもらった、ってのが正解だろう
な。親父はあいつから裏の情報を得ていたそうだ。あいつは家に来ても、飯
は食ったが酒は飲まなかった。食うだけ食うととっとと帰っていった。何を
見返りにしていたのか、今となっては何も判らんがな……」
　気づくと、舞は誠十郎の方を見ていなかった。視線は下を、全く違う方向
を見ていた。腕を組み、顔を少し下に傾けて。
　舞は、誠十郎の言葉から、雅樹の昔の姿を造り出そうとしていた。だが、
それは意外なほど難しいことだった。少なくとも、舞には簡単そうに思え
た。だが、いつもの明るく少し影のある表情から組み替えるのは困難だっ
た。
「だが、あの日」
　舞は視線を誠十郎へと戻した。上目遣いに睨み付けるように。
「親父は目に見えて怯えていた。朝からずっと、その来訪を恐れていた。
……気付いた時には、あいつが家の中にいた。ぎらついた日本刀を持っ
て、な」
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『今度の水曜は Java メルマガ！』
「【第１３回  不可侵領域を作る】を配信します」
『バックナンバー、買ってくれた人結構いるのかな』
「その辺はリアルタイムに出ないから分からないんだよね」
『やっぱ、月４００円は高いかもね。今回のは２００円分の価値ある？』
「……今回はむしろないかも」
『ええっ！？』
「普通の教科書に書かれてることだし。その代わり」
『その代わり？』
「次の号はポイント高いかも」
『どのくらい？』
「……次の号だけで４００円分はあるんじゃ？」
『じゃ、買っても損ないね！』
「たぶん……」
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 8.05
コマンドラインと表示方法

「さて、今回は WinMain() の残りふたつの引数、それと戻り値について見
ていきましょう」
『インスタンスハンドルは３回もやったのに……』
「これはインスタンスハンドルに比べればそれほど重要じゃないから。まぁ
それなりには重要だけど、たぶんすぐ使わないし」
『ってゆーか、 MFC 使ってたときは使ってなさそうな感じだし』
「確かにそうかも。じゃ、まずは第３引数から」

#include <Windows.h>

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    MessageBox( NULL, p_pchCmdLine, "WinMain()", MB_OK );
    return 0;
}

『第３引数の p_pchCmdLine を直接メッセージボックスで出してるのね』
「そう。で、実行してみると？」
『……なんか空欄だけど』
「このままだと空欄なんです。で、【プロジェクトの設定】ダイアログの
【デバッグ】−【一般】の【プログラムの引数】って所になんかテキトー
に書き込んでみて」
『んじゃ MizukiChan っと』
「それで実行すると」
『うお、 メッセージボックスに MizukiChan って出た！』
「もうひとつ例を見てもらおうかな。えっとね、 Debug\SimpleDialog.exe 
のショートカットを作って」
『ほい作ったよ』
「そのプロパティの【ショートカット】ページの【リンク先】は」
『さっきのだから』

C:\PROGRAM\SimpleDialog\Debug\SimpleDialog.exe

『ってなってるよ。実行ファイルのフルパスってヤツだよね』
「そうそう、フルパス。これを」

C:\PROGRAM\SimpleDialog\Debug\SimpleDialog.exe KamiChan

「ってして OK で閉じて、このショートカットをダブルクリックして実行し
てみて」
『ほいダブルクリック。お、今度はメッセージボックスに KamiChan って出
た！』
「これとさっきのは同じことだっていうのがまず重要。さっきの【プログラ
ムの引数】に文字列を書くと、実行したときにその文字列を一緒にくっつけ
て実行してくれるんです」
『一緒にくっつけて？』
「そう、さっきのショートカットの例みたいにね。実行ファイルを実行する
ときには、さっきみたいにスペースを入れて、いくつも文字列をくっつけて
実行できるんです」
『でもそれに何の意味が……あ！　そっか、それが p_pchCmdLine に入って
るんだ！』
「そゆこと。関数に引数を渡して呼べるでしょ、それと同じように、こうい
うふうにしてアプリを実行するときに引数を渡すことができるんです」
『ほー』
「ま、この辺は普通のウィンドウズアプリだとあんまり使わないんだけど」
『じゃあ何で使うの？』
「 MS-DOS とか UNIX 系とか」
『……なんか難しそう……』
「でもこの辺は将来的には避けて通れない、んだけど、まぁ今はとりあえず
いいから」
『ほっ』
「今は、こういうふうに実行するときにスペース明けて文字列を入れると、 
WinMain() の引数に入ってるってことだけ憶えておいて」
『ほーい。あ、 MFC の時はどうするの？』
「 MFC に限らず、 GetCommandLine() って API でいつでも取り出せるか
ら」

#include <Windows.h>

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    // 引数から。
    MessageBox( NULL, p_pchCmdLine, "WinMain()", MB_OK );
    // API から。
    MessageBox( NULL, GetCommandLine(), "WinMain()", MB_OK );
    return 0;
}

『ほい実行。あれ？　まんま同じじゃないね。 GetCommandLine() には実行
ファイルのフルパスが入ってる。それが " で囲まれてるし』
「こっちが本来の【コマンドライン】だからね」
『こまんどらいん？』
「命令なんかをコマンドって言うでしょ」
『なんか昔のＳＦチック』
「そうかな……で、アプリの実行なんかもコマンドの一種って考えて、その
実行ファイルのフルパスとその引数を含めた１行を【コマンドライン】って
言うんです」
『ふーん』
「ま、その辺はさっき言ったあとで教える部分と一緒の方が分かりやすいか
ら今はパス」
『あっと、あと " で囲まれてるのってなんで？』
「ファイル名やフォルダ名にスペース使えるから」
『あ”、そういえばそうだね。 Program Files とか』
「 " で囲まないと、どこまでがアプリの引数で、どこまでがパラメーター
か分からないからねー」
『なるほど……』
「ちなみに、ただ実行ファイルのフルパスが欲しい場合には 
GetModuleFileName() って API があるから」

#include <Windows.h>

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    char pchAppPath[MAX_PATH];
    GetModuleFileName( NULL, pchAppPath, MAX_PATH - 1 );
    MessageBox( NULL, pchAppPath, "WinMain()", MB_OK );
    return 0;
}

『結構便利なのねー』
「あと、たとえば〈今画面に表示されてるアプリの実行ファイルを知りた
い〉って場合には GetModuleFileName() は使えないから注意してね」
『なんで？　リファレンス見ると、 GetModuleFileName() の第１引数にア
プリのインスタンスハンドルを……あ』
「そゆこと」
『インスタンスハンドルじゃどのアプリっつーかどのプロセスがっていうの
は分かんないんだもんね』
「この辺は結構難しい部分かもね。ま、これもまた今度ってことで。次は最
後の引数、 p_iCmdShow について」

#include <Windows.h>
#include <stdio.h>

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    char pchMsg[1024];
    sprintf( pchMsg, "p_iCmdShow : %d", p_iCmdShow );
    MessageBox( NULL, pchMsg, "WinMain()", MB_OK );
    return 0;
}

『 1 って出た』
「ま、これだけじゃ何が何やらだよね。そこで、さっきのショートカットを
使います。これを普通に実行して」
『同じ 1 って出た』
「次に、プロパティの【ショートカット】ページの【実行時の大きさ】を
【最小化】にして実行すると」
『うお、 7 になった！』
「最大化だと」
『 3 っつーかメッセージボックスが最大化した！！』
「こういう、どの大きさで表示して欲しいのかっていうパラメーターがこの
第４引数に入ってます」
『これはなんかの API で取れる？』
「うん、 GetStartupInfo() って API で。これはちょっと面倒だからパ
ス」
『ま、どれもここで取ればいいんだからあんまり気にしなくてもいいのかも
しれないけど。あ、そういえば、これって何に使うの？』
「今のメッセージボックスは勝手に大きくなっちゃったけど、ホントはこの
パラメーターを調べて、ウィンドウやダイアログを表示するときに色々変え
たり、もしくは無視したり」
『無視してもいいの？』
「ダイアログのほとんどは最大化しないでしょ」
『そういえば……』
「この辺は、あとで実際にダイアログやウィンドウを作ったときにね」
『じゃ、最後に戻り値！』
「とりあえず今の状態で実行して」
『ほい実行』
「終了したときに、アウトプットウィンドウに」

プログラム 'C:\PROGRAM\SimpleDialog\Debug\SimpleDialog.exe' は
コード 0 (0x1) で終了しました。

「って出てるでしょ」
『うん、なってる』
「じゃ、プログラムの最後の戻り値、今は 0 になってるからこれを 1 にし
て実行して」
『ほい実行』

プログラム 'C:\PROGRAM\SimpleDialog\Debug\SimpleDialog.exe' は
コード 1 (0x1) で終了しました。

『お、さっきは〈コード 0 〉だったのに今度は〈コード 1 〉になった！』
「こういうふうに、 WinMain() の戻り値は【終了コード】になるんです」
『おお。って、これ何に使うの？』
「うーん、これもコマンドラインと同じで、ウィンドウズアプリではあまり
使わないんだよね。使う時には、成功時と終了時とで戻り値を変えて、それ
に合わせて処理を変えるとか」
『？　関数みたいね』
「そう、昔のアプリは、今と違って関数っぽかったんです。その辺はまた先
の話ってことで」
『なんか、まったく違う世界が垣間見えた気がする……』

/*
    Preview Next Story!
*/
『ってゆーかなんか地味！』
「この辺はウィンドウズプログラミングとは縁遠いからねぇ」
『なんかカラフルで綺麗なのやりたい！』
「じゃ、リソースは？」
『そうそう、アイコンとかそういうの！』
「でも来週は地味です」
『げ！』
「というわけで次回」
＜ Version 8.06 リソースを用意しよう！ ＞
『につづく！』
「カラフルなリソースも、地味な技術の上に成り立ってるのです」
『そんなこと知りたくないー！』


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

・更新なしの予定
　死ぬほど忙しい……。


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.com/nikki2/
・購読登録を解除したいときにはこのページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.com/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.com/Info/MailMagazine/

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

