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

    KAB-studio.h


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

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

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

・ホットハーブに１話追加！
　三人合体ホットハーブに１話追加します！　え？　なんで１話だけなん
だって？　それは……。
[ 三人合体ホットハーブ ]
http://www.kab-studio.com/Comic/HotHerb/

・４コマｘ４本……
　チョー普通な日記７月１５日〜１９日に Kanon ４コマを４本掲載しまし
た（爆）。まーあんま気にしないで。
[ チョー普通な日記７月１５日〜 ]
http://www.kab-studio.com/nikki2/n14_07b.html


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

2002/07/14 (Sun)
　午前中は Kanon のバックアップ。午後はほとはー。実は版権もの苦手。
ホームページ容量が増やせない？　Ｎスペの著作権。クリエイターとオー
ディエンスの立場、プログラミングとコミックスとの違い。わてと皆さんと
は継ながってるんです。

2002/07/15 (Mon)
　版権もの克服対策としてちょっと描いてみる。お仕事はのんびり。帰りに 
Kanon サントラ１初回限定版を発見。結局どうにかなる。 Kanon OVA につ
いての妄想。

2002/07/16 (Tue)
　Kanon ４コマその１。お仕事は忙しく。帰りに disintegration 購入。ア
ンソロジーの好きな作家さん。 Kanon ４コマ、難しい。

2002/07/17 (Wed)
　Kanon ４コマその２。お仕事は客先へ。セットアップだけだけど。データ
センターじゃなくて助かったです。貯まるしおり。 disintegration の最後
の２曲がいいなー。

2002/07/18 (Thu)
　Kanon ４コマその３。勤務先の飲み会でかなり飲んできました。暴走。女
の子ってのはねー……。

2002/07/19 (Fri)
　Kanon ４コマその４。とも＝祐一。お仕事はテスティング。カレー。テレ
ビ全然見てない……。

2002/07/20 (Sat)
　のんびり。 CG Gallery を圧縮ファイルに。 ToHeart します。とりあえ
ずやっとこうってのって……。ほとはー描いてない。テレビはミルモでポ
ン！とあずまんが大王がいい感じ〜。


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

■　第四章　ふたりの勇者　−１３−

　ディルトは空高く跳び上がり、言葉を発する。
『我らを護りし者、その力を……』
　リシュネはディルトを見上げながら、つぶやく。
「あ〜あ、本当に殺っちゃうんじゃ……え？」
『光をっ、！？』
　地面から無数の火線が引かれる。そのスピードはディルトから見ても速い
と感じられるものだった。それらをひとつひとつ躱していく。瞬間、すべて
の炎が爆発し、ディルトを炎の中へと閉じこめた。
「こんな……馬鹿なっ」
　炎と爆風の威力は無視できないほどだった。ディルトは叫び声を上げ、炎
を吹き飛ばす。
「……っ、キィッ！！」
　ディルトはパニックに陥っていた。斜め下から高速で飛来する水の柱、と
言うよりは矢か槍のようなそれらを見えない盾のようなもので弾いていく。
が、すべてを弾ききれず数本がディルトの体をかすめた。空中に血が舞う。
「ガァッ！！」
　さらに飛来する水槍を手と足で無理矢理弾いていく。確かにそれは成功し
たが、手と足に傷が生まれ、さらに血が舞った。
「敗因はふたつ。分かるかい？」
　洋一が少年とリシュネに訊く。
「ディルトが遠距離戦を挑んだから。あれほどの連続攻撃じゃ、私達の方法
じゃかなわない」
「それだね。ディルトはあのふたりと戦ってはいない。いや、僕達だって、
あれほどまでにあのふたりが強いとは知らなかった。情報不足も敗因だね」
「いいかい」
　その言葉は、まるで深海へと引き込むような深く重く聞こえ、少年とリ
シュネは洋一へと真摯な表情を向けた。
「今日はディルトにやられ役を引き受けてもらったが、本番で君達があの立
場になる可能性は十分ある。勝負は時の運、十戦を十勝したいのなら、相手
を甘く見るんじゃぁないぞ」
「はい」
　リシュネは応えたが、少年は応えなかった。
　ディルトはすぐ近くに来るまで蒼い炎に気付かなかった。水の槍を躱しな
がらその炎を左手で叩いたとき、左手は瞬時に消し飛んだ。蒸発した、とい
うのがもっとも適切な表現だった。
「……」
　痛みを抑えることすらできなかった。混乱の極みだった。戦意を喪失しか
けていた。陽の光が陰ったことに気付くまでの時間も、ディルトにとっては
あまりにも長い。気付き、見上げたとき、頭上で龍が巨大な顎を広げている
のが見えた。
　ディルトは、死を覚悟した。
「そこまで！！」
　両顎が勢いよく閉じ、直径三メートルはあろうかという胴体がディルトが
いた場所を突き抜けていく。全長では５０メートルほどの龍が抜けたあと
に、濡れてすらいないディルトが驚愕した表情を見せていた。
「ふぅ、危ない危ない」
　汗びっしょりになりながら、舞は呼吸を整えつつ水龍を池へと導く。自分
自身、ディルトを殺さなくてよかったと思いつつも、洋一の言葉に反応して
とっさに行動していたのはなぜなのだろうかと自問していた。
　あの人の言葉、ううん、あの人には何か、独特な何かがある……。

                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『作者ウソツキ！！』
「先週あんな感じだったのに、ころっと４コマ描いてるし……」
『ってゆーか、作者だって版権もの絶対やりたいに決まってるもん！』
「ヒット数は稼げそうだよね」
『キーッ！！』
「ど、どうしたの？」
『だって、版権ものが跳梁跋扈したら……』
「したら……？」
『あたしたち出番ないじゃない！！』
「う”、確かに……オリジナルものは苦戦強いられるよね、絶対」
『版権もの反対！！　あたしたちに希望の光を！』
「でもそうしたらまたホットハーブ中心に戻るだけなんじゃない？」
『それはそれでヤダ』
「わがまま……」
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 9.06
メニューアイテムのハンドラを作る！

「前回まででメニューの基本的な部分はほとんど教えました」
『ほとんど？』
「そう、まだ重要なのが残ってます。今までは【ファイルを開く】とかの最
初からあるアイテムしか使わなかったけど」
『あ！　まだアイテム追加して……で、それでイベントハンドラ呼ばせたり
とかできるんたよね、そーゆーのまだだね』
「そうそう。今回はその辺を見ていきます。じゃ、まずは普通のメニューア
イテムを追加してみます」
『 Version 9.02 ( No.163 ) のだよね』
「あのときと同じようにすればいいから。えーっと、ファイルサブメニュー
でいいかな、その一番下に空欄があるから、そのプロパティを表示して」
『 ID とキャプションはっと。そういえば、これってダイアログのボタン
作ったりするのと同じでいーの？』
「うん、基本的な仕組みは同じだから」
『そーゆーもんなんだ。じゃあ ID は ID_MENU_TEST で、キャプションは
【テスト(&T)】、プロンプトは〈テストだよ〉っと』
「他のチェックボックスは全部オフでいいから。とりあえずそれでビルドし
てみて」
『ほい。うん、ビルドして実行してメニュー……にあることはあるんだけ
ど……淡色だ……』
「そうなんです。 MFC の仕組みとして、イベントハンドラのないメニュー
アイテムは自動的に淡色表示されることになってるんです」
『なんだかいい迷惑』
「まぁそれはたいがいの人が思ってるから我慢して。というわけでイベント
ハンドラを作ります。まず ClassWizard 出して」
『ほい』
「例によって【メッセージマップ】のページで、左下のオブジェクト ID の
中に」
『 ID_MENU_TEST がある！』
「ところが！」
『な、なに？』
「右上の【クラス名】は何になってる？」
『 CMainFrame だよ』
「そこを CSdiTestView にして、同じようにオブジェクト ID を見てみる
と……」
『あれ？？？　こっちでも ID_MENU_TEST がある！』
「実は、メニューのイベントハンドラはフレームウィンドウでもビューウィ
ンドウでも受け取れるんです」
『うわ！　何それ、混乱する！』
「だからどっちにイベントハンドラを作らないといけないかってちゃんと考
えないとダメってこと」
『両方作ったら？』
「試してみたけどビューの方だけ呼ばれるみたいだね。だから両方作るって
いうのは意味ないかな」
『で……どっちに作ればいいのかな』
「この場合はたぶんフレームウィンドウの方。ただ」
『ただ？』
「こういう、どのクラスでどういう処理をするのかっていうのは
〈プログラムの設計〉っていう領域」
『プラグラムの設計？』
「一番悪い例は、あるメニューアイテムはフレームウィンドウで、他のメ
ニューアイテムはビューウィンドウで処理、っていうの」
『バラバラは良くないってことね』
「だから、たとえばフレームウィンドウにまとめることにしたとします」
『うん』
「でも、このプログラムをもう少し進めると、フレームウィンドウはウィン
ドウの処理をするのが仕事だから、実際の処理を入れるとごちゃっとするこ
とがあります」
『実際の処理？』
「複雑な計算をさせたりする場合とか」
『そういう計算式がフレームウィンドウに入ってると確かにぐちゃぐちゃし
そう』
「そうなると、そういう処理をするための専用のクラスを別に作るって話が
出てきます」
『別のクラスを作る！？』
「そういう風に、どの処理をどのクラスにまとめるか考える」
『それが〈プログラムを設計する〉ってことなんだ！』
「そういうこと。これはただのプログラムを組む技術とは違うものだし、身
に着けるのは結構大変」
『水希ちゃんも？』
「もちろん。今も勉強中。ま、プログラムを組むこと自体が大工さんの仕事
なら、設計は」
『建築デザイナーの仕事、そうそう両方できるもんじゃないね。って、そ
れって普通別の仕事なんじゃない？』
「う”。プログラミング業界ってのはそこまで人材資源に緩くないんだよ
ね……」
『ダメじゃん』
「う”。まぁそれは置いといて」
『きっと永遠に置いとかれるんだ……』
「この場合はフレームウィンドウにイベントハンドラを置いた方がいいか
な」
『前回も、ポップアップメニューのはフレームウィンドウに渡してたもん
ね』
「一応それを踏まえてね。というわけで、クラス名に CMainFrame を選択し
て、オブジェクト ID に ID_MENU_TEST を選んで」
『メッセージは？　 COMMAND と UPDATE_COMMAND_UI とがあるけど』
「 COMMAND の方を選んで」
『ほい、じゃあ COMMAND 選んで【関数の追加】っと。うん、フレームウィ
ンドウに追加されたよ』

void CMainFrame::OnMenuTest() 
{
    // TODO: この位置にコマンド ハンドラ用のコードを追加してください

}

『ブレークポイント置いてビルドして実行！　メニューアイテム、淡色表示
されてない！　んで選ぶと……ちゃんと引っかかった！』
「というわけでこれでメニューに対してのイベントハンドラが作れたことに
なります」
『おお。ってゆーか、ダイアログのボタンの時と変わんなくない？』
「だね。これは MFC のっていうよりも、ウィンドウズシステムとして、ボ
タンなんかとメニューなんかは共通のシステムってこと」
『あ、ってことはメニューアイテムも WM_COMMAND で送られてくるってこと
なんだ。だから COMMAND なのね』
「そゆこと。だから難しく考える必要はないかな」
『……で？』
「……別にイベントハンドラ作っても、今回は特にすることないんだよね」
『どっちかってゆーと、今回って手段が目的って感じ』
「まーメニュー使うこと自体は使えると思うよ。さて、後半はさっき使わな
かった UPDATE_COMMAND_UI について。これはメニューを淡色表示させる時
に使います」
『メニューを淡色表示？』
「ダイアログのボタンの時と違って、メニューアイテムって状況ごとに淡色
になったりならなかったりするでしょ」
『うん、できることとできないことが変わるもんね』
「それを管理するための MFC のシステムがこれ。とりあえず、さっきと同
じ手順で UPDATE_COMMAND_UI のイベントハンドラを作って」
『ほい。こういうのできたよ』

void CMainFrame::OnUpdateMenuTest(CCmdUI* pCmdUI) 
{
    // TODO: この位置に command update UI ハンドラ用のコードを（略）
    
}

「このメンバ関数は、メニューアイテムが表示される直前に呼ばれます」
『メニューアイテムが表示される直前？』
「試しに」

void CMainFrame::OnUpdateMenuTest(CCmdUI* pCmdUI) 
{
    TRACE0( "OnUpdateMenuTest()\n" );
}

「を試してみて」
『ほい。あー、【ファイル】サブメニューが表示される時に呼ばれるね』
「そうでしょ。そこで、この中でこういう処理を普通はします」

void CMainFrame::OnUpdateMenuTest(CCmdUI* pCmdUI) 
{
    // 許可／不許可を入れる変数を用意します。
    bool bIsSetEnable;

    // ここで、現在の状態を調べて TRUE か FALSE を入れます。

    // ここではテストってことで FALSE を渡します。
    bIsSetEnable = FALSE;
    // 許可／不許可をセットします。
    pCmdUI->Enable( bIsSetEnable );
}

『ん？　なんかよくわかんないコメントが』
「このメンバ関数はメニューアイテムが表示される直前に〈このメニューア
イテムはどう表示するの？〉ってことを訊いてきてる、そう考えてくださ
い」
『そう考える』
「そこで、まずこのメンバ関数の中で、現在の状態を調べます。と言って
も、このアプリだとそういうのないからその部分は割愛」
『だからこういうコメントね』
「その現在の状態によって、引数として渡されてる CCmdUI の Enable() 
ってメンバ関数に渡す値を、 TRUE にするか FALSE にするか変えます。 
TRUE だとメニューアイテムは使えるし、 FALSE だと淡色表示になります」
『これだと FALSE しか渡してないから淡色表示になるのね』
「試してみて」
『ほい。お、淡色だ』
「このメンバ関数は、メニューアイテムを含むポップアップメニューが表示
される度に呼ばれるから、その都度現在の状態をチェックして」
『 TRUE か FALSE 渡せばいーわけね。……でもさ、これってつまり、全部
のメニューアイテムにしなきゃいけないってことだよね』
「そうだよ。ってゆーか、今の AppWizard が作ってくれたメニューは、全
部 MFC がカバーしてくれてるでしょ」
『ファイルを開くとか、自動的に最初からある、とか？』
「そうそう。だから今は気になってないけど、最終的には」
『げ！　そうか、メニュー全部自分で作ったら、全部イベントハンドラ作ら
なきゃいけないんだ！』
「 COMMAND の方もね」
『そっちもあるんだ、ってゆーかそっちの方が大変ね……』
「今までずっとダイアログアプリしか作ってこなかったけど、それは SDI 
が複雑で難しいから、ってところがあるんだよね」
『確かに、ただメニュー使うだけでもかなり複雑だもんね』
「それに、今の淡色表示の所、実際に〈今淡色表示すべきか〉を調べたり管
理するのってかなり難しいと思うよ」
『使えるはずなのに淡色表示にしちゃう、とかあり得そう……』
「ま、複雑化するのは避けようがないから、それをいかに解りやすく組んで
いくか……っていうのはもう少し先になってからの話かな」
『んー』
「あ！」
『な、なに？』
「さっきの CMainFrame::OnUpdateMenuTest() の中身、コメントアウトして
おいてね」
『あー、このままだとずっと淡色表示だもんね。でも削除しないの？』
「これは次回使うから」

/*
    Preview Next Story!
*/
『でもなんに使うの？』
「ダイアログボックスのボタン代わり」
『そっか、メニューを選んで何かさせるわけね』
「で、させることはアクセラレーターの追加」
『アクセラレーター？』
「というわけで次回」
＜ Version 9.07 アクセラレーター ＞
『につづく！』
「アクセラレーターは面倒なんだ……」
『げ、面倒なの嫌い！』
「僕も嫌い……」


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

・ホットハーブに１話追加予定。
　三人合体ホットハーブに１話追加予定です。たぶん大丈夫。

・ CG をまとめます。
　CG Gallery の去年より前のものを圧縮ファイルにまとめます。今掲載し
ているものはすべて含める予定です。
[ CG Gallery ]
http://www.kab-studio.com/CG/Gallery/


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
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
*/
////////////////////////////////////////////////////////////////////

