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

    KAB-studio.h


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

    送信日： 2002/07/29(Mon) No.168
    配信数： 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/

・ CG をまとめます。 ]
　CG Gallery の去年より前のものを圧縮ファイルにまとめます。以前掲載
していたものはすべて含まれていますのでコレクター（？）の方は安心して
ください。その分、ファイルサイズが大きいけど……。ダウンロードはダウ
ンロードルームにて。
[ CG Gallery ]
http://www.kab-studio.com/CG/Gallery/
[ ダウンロードルーム ]
http://www.kab-studio.com/Freeware/index.html#CGGallery


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

2002/07/21 (Sun)
　のんびりなのに眠い。ほとはーと Kanon アンソロとラーメン。昼寝して
ぷらとわ描いて料理。トマト料理のレシピ。テレビはＮスペ。信頼回復の方
法が間違ってるよーな。 n14_02b.html 。

2002/07/22 (Mon)
　仕事中眠かった。熟睡できてないから？　 SQL の外部結合。ほっけみり
んのお皿。 Kanon サントラブックレット作成。形になるっていいね。やっ
ぱりほとはー強し！

2002/07/23 (Tue)
　お仕事は XML 。ココロ図書館ＤＶＤ７巻とおねてぃドラマＣＤ２巻。３
巻は出ないの？　帰ってからはまたブックレット作成。 .hack//SIGN が人
気大。 Kanon のゲーム版とアニメ版……。

2002/07/24 (Wed)
　サーブレットとか Bean とかってすごい。 JSP の方を変えればポリモー
フィズムするわけでしょ。文字コード。わけわかんない。天使のしっぽＤＶ
Ｄ７巻とおねてぃＤＶＤ４巻購入。ペンギン回ってる〜。秀丸って便利。

2002/07/25 (Thu)
　眼鏡折れる（爆）。瞬間接着剤で……。 HTML のテーブル作り。タグ直打
ちって変？　サーブレットの解析も。午後は国際システムの月例会議。先月
度に買ったもの。ってゆーか初回限定版購入記念。

2002/07/26 (Fri)
　JSP とサーブレットと Bean って素晴らしい。特に JSP はいいねぇ。わ
てのいない間に……。モハンってカレー屋へ。ちょっと高い……。ファース
トキッチン、ポイント高い？　明日は色々しないと〜。

2002/07/27 (Sat)
　午前中はかぶヘッダーとかほとはーとか。午後に眼鏡購入。安いのを買う
つもりが１万５千円。下にしか縁がないの。小さいレンズに慣れてない。イ
ラストの見え方。チョー普通な日記をちょっとだけ変えます。


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

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

　ディルトがゆっくりと降りてくる。洋一はその場に近づき、背広を脱いで
肩に掛けた。見上げるようにして見せるディルトの表情は、子供のように怯
えていた。
「すまなかったな。この埋め合わせは必ずしてやるから。今は、先生の所に
行って、ゆっくりお休み」
　ディルトは力無くうなずく。智子も近づき、ディルトの肩を抱く。
「頼みます」
　智子はうなずき、ディルトを車へと運ぶ。その後ろ姿を見送ったあと、洋
一は背筋をただして舞と雅樹へと向き直る。
「さて、君達の力はよく分かった。早速、本題へと移ろう」
　かなりの距離を取っていた舞と雅樹が近づいてくるのを確認してから、洋
一は車に乗り込む。
「話は車内で、だ」
　少年とリシュネも乗り込む。雅樹は幾分訝る。
「大丈夫でしょ、それにあたし疲れたもん」
　舞はその考えを否定して、車に乗り込んだ。全員の中でもっとも長身の雅
樹が、体を縮めるようにして乗り込む。車は走り出し、雅樹はそれが帰り道
かどうかチェックしているようだった。
「さてと、自己紹介からいこうか。彼は、自分の名前を呼ばれることを嫌が
るから気を付けるようにね」
「もちろん、僕が言わなければ言うこともないだろうね。僕のことは適当な
呼び方していいよ」
「じゃぁ少年Ａ」
「え”……」
「ぷっ……」
　思わず吹き出したリシュネに視線が集まって、リシュネは顔を赤くする。
雅樹は自分の言ったことの反応に驚いていた。
「穂香さんのアイディア？」
「いや、違うんだけどな……」
「次は、リシュネかな」
「あ、ええと、私はリシュネ・アインヴィーゲン、１５歳」
「そいつよりよっぽど親切だな」
「そいつって呼び方はないでしょう」
「でも名前言わねぇのに」
「まぁまぁ。私は結白舞。ふたりとも知ってるだろうけど、一応普通の高校
生」
「その実、碧き泉の力を受け継ぐ者ってわけだ」
「そういうこと。で、雅樹と穂香さんの紹介」
　舞はいつものこととあきれた感じで継ないだが、少年とリシュネは明らか
に妙な表情を見せていた。
「ったく、そういう言い方はないよなぁ、な？　ま、いっか。俺の名は朴雅
樹、朱き泉の力を受け継ぐもの。年齢はひ・み・つ」
「何それ、僕のまね？」
「違う違う、ものすごい若作りなんだよこいつ。ホントは百歳くらいなんだ
から」
「バカ、んなわけないだろ。んと……いくつだっけ、ああ、ホントは今年で
ちょうど七十歳なんだ」
　この妙なやりとりに、少年とリシュネのふたりはまだ慣れていなかった。
「んでだ、さっきからちょくちょく俺が相談してる相手を紹介しよう。柊穂
香、俺のパートナーで奥さんで女神様、ってところかな」
　と、窓の外を指し示して言う姿は、馬鹿にされてるんじゃないかと思える
ものだったが、舞と雅樹の表情はそう見えなかったし、少なくとも舞はあま
り嘘のつけない人物だという情報は持っていた。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『 CG Gallery の圧縮ファイル化なんて、地味ねー』
「空き容量が増えるっていうのが一番の理由みたいだけど」
『……難しいよね』
「何が？」
『だってさー、あたしの絵がギャラリーからなくなるわけでしょ』
「確かにそういう意味ではちょっと寂しくなるよね」
『でも、新しいの見て、前のが全部欲しいっていう人には便利よね』
「 ADSL なら８メガなんてあっという間だろうしね」
『あーっ、どっちの方がいいんだろう！』
「両方がいいんじゃない？」
『へ？』
「ギャラリーにもあって、ぜんぶまとめてのダウンロードもできる、と」
『……身も蓋もなくない？』
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 9.07
アクセラレーター

「今回はアクセラレーターについて見ていきます」
『メニューのところでちょっと出てきたのだね』
「そうあれ。まず、アクセラレーターそのものを使っておこうか。普通に実
行して、 Ctrl + O を押して」
『ファイルダイアログが出た。あー、【ファイルを開く】の右側にあったヤ
ツね。 Version 9.02 ( No.163 ) でやったのだね』
「そう、あれ。あのとき見たように、メニューアイテムにどう書くかは関係
なくて、アクセラレーターっていうリソースでこの設定をします」
『 ResourceView を見ると Accelerator ってあるけど、これがそう？』
「それがそう。開いてみて」
『出てきた。なんか表みたくなってる』
「この表全体を【アクセラレーターテーブル】って言います」
『テーブル？』
「プログラミングの世界では、表のことをテーブルって呼ぶことは多いか
ら」
『ふーん。で、左の列に【 ID 】、真ん中に【キー】、右端に【タイプ】
ってなってるけど』
「これは、真ん中のキーを押すと左側の ID のコマンドが実行されるって意
味。たとえば ID_FILE_OPEN は」
『 Ctrl + O になってる。だから、さっき Ctrl + O を押すとファイルを開
くダイアログが出たわけね』
「だから……この行のプロパティを出して」
『ほい。 ID とかキーがある。ってことはこのキーのところを A にして』
「ビルドして実行すれば」
『 Ctrl + A でファイルを開くダイアログが出た！　なるほどー』
「それに、たとえば ID を ID_MENU_TEST にすれば」
『前回作った CMainFrame::OnMenuTest() が……呼ばれる！　そのときの
TRACE0() のがちゃんと出てる』
「つまり、この ID のシステムは、アクセラレーターもメニューも一緒って
こと」
『イベントハンドラは ID ごとに作って、その ID はメニューからもアクセ
ラレーターからも実行できるってわけねー。この辺は分かりやすいね』
「ちなみに、 CMainFrame::OnUpdateMenuTest() の中で、コメントアウトし
てると思う CCmdUI::Enable() の呼び出し部分、これを機能するようにして
FALSE を渡せば」
『メニューを淡色にするのだね……おっ、アクセラレーターも効かなくなっ
た！』
「この部分も共通してるってこと」
『へー、ちょっとすごいかも』
「ま、だからアクセラレーター自体は簡単だけどね」
『質問！』
「はい火美ちゃん」
『プロパティの【タイプ】ってどういう意味？　【ASCII 文字】と
【仮想キー】ってあるけど』
「うん、表の方も【ASCII 文字】は【ASCII】、【仮想キー】は【VIRTKEY】
って表示されるよね」
『 ASCII 文字って前やったよね』
「 Version 5.04 ( No.069 ) で見たね。【ASCII 文字】の場合、押した文
字がそのまま送られてきます」
『ん？　それって当たり前じゃないの？』
「場合によっては違うんです。たとえば Ctrl + O 。これ、 CapsLock が
入ってるかどうかで O か o か変わるでしょ」
『うん変わるね』
「 O と o とで ASCII 文字が変わるから、【ASCII 文字】の場合にはこの
大文字と小文字とで違うキーが押されたってことになるんです」
『げ、それってよくなくない？』
「うん、たぶん普通は使えないと思うよ。だから普通は仮想キー。仮想キー
の場合、大文字小文字はこの場合区別しないから」
『ほー』
「この辺の話は、今の Version.9 が終わったあとの、 SDI アプリを SDK 
だけで作ったときに出てくるから、ちょっと憶えておいて」
『もしかして根が深い話？』
「結構ねー。あ、ちょっとアクセラレーターの部分、元に戻しておいて」
『元ってゆーと』
「とりあえず ID_FILE_OPEN を Ctrl + O で選べるように戻しておいて」
『ほいほい』
「さて！」
『さて？』
「これから例によってプログラム上でアクセラレーターを操作するんだけ
ど、はっきり言ってちょっと難しいです」
『げげ！』
「でも、もうそろそろ手を出してもいいレベルかなとも思うから、少しがん
ばってみて」
『そのくらいできないとダメってレベル？』
「何がダメかによるけどね……で、これからは前回作った 
CMainFrame::OnMenuTest() メンバ関数をベースに話を進めます」
『メニューのイベントハンドラね。これが、前のダイアログの時のボタン代
わりになるんだ』
「そゆこと。で、まず肩慣らしにこのコードを試してみて」

void CMainFrame::OnMenuTest() 
{
    // アイテム数取得。
    int iTableNum
        = CopyAcceleratorTable( m_hAccelTable, NULL, 0 );
    TRACE( "%d\n", iTableNum );
}

『ビルドして実行。 14 って出た』
「これは、今アクセラレーターテーブルに入ってるアイテムの数を取得する
コード」
『あ、ホントだ、１４個あった。でも CopyAcceleratorTable() 、これって
関数名見ても数取得するって感じじゃないよ。コピーするとかなんとか』
「でしょう、この辺がまず難しい感じかな。この関数を選択して F1 押し
て」
『 MSDN 見るのね。うん、 CopyAcceleratorTable() のページが出た。
……あれ？　なんか変くない？』
「いつもはダイアログ出るでしょ」
『そう、 MFC のメンバ関数のとか、 API でも日本語のとか。……もしかし
て、どっちもないの？』
「ないんです。 API しかないんです。しかも英文。まずこれが難しい点そ
の１」
『日本語のがないのはちょっときついね……』
「次に、 CopyAcceleratorTable() のページの下の方に Keyboard 
Accelerator Functions へのリンクがあるから」
『ほいと。……これって、アクセラレーター関係の API の一覧だよね……
５つしかないよ』
「これが難しい点その２。アクセラレーターを操作するときには、この少な
い API を駆使するしかないんです」
『イヤな予感する……今までだったら、 Insert なんたらとかあってそれ呼
ぶだけだったのに、その気配すらない……』
「そう、アクセラレーターを操作するときには、アイテムひとつひとつの操
作はできないんです。 API がそこまでしっかりと用意されてないんです」
『面倒そう……』
「加えて、ネットも含めて情報が少ないのが難しい点その３」
『日本語サイトなんて数えるしかない……あ、かぶスタがあった』
「っと、そこに書かれてるのはちょっと間違ってるからあまり参考にしない
で」
『ダメじゃん』
「さて、こういう難しい状況の中で、アクセラレーターの追加を少しずつし
てみます。さっきのコードを振り返って、こういう行があるでしょ」

        = CopyAcceleratorTable( m_hAccelTable, NULL, 0 );

「この m_hAccelTable 」
『最初に m_ が付いてるからメンバ変数だね』
「これは……っと、ちゃんと見た方がいいかな。 FileView で MainFrm.h 
ってファイルを探して開いて」
『ほい。 CMainFrame がここに入ってるんだね』
「この中の最初の方」

class CMainFrame : public CFrameWnd

『 CMainFrame は CFrameWnd から継承してるんだね』
「この辺は Version 2.13 ( No.024 ) や Version 3.1 ( No.026 ) 参照。
というわけで CMainFrame では CFrameWnd の機能が使えます。あ、ちなみ
に CFrameWnd は CWnd から継承してるから」
『そりゃそうよね、フレームウィンドウのクラスなら、ウィンドウなんだか
ら CWnd から継承してないと』
「で、話を戻して。 m_hAccelTable は CFrameWnd のメンバ変数で、 
HACCEL っていうアクセラレーターテーブルを操作するためのハンドル」
『ウィンドウハンドルみたいに、ハンドルを中に持ってるんだ』
「これは、アクセラレーターの性質がちょっと特別なせい。アクセラレー
ターを使う時、このハンドルをいちいち TranslateAccelerator() って 
API に渡して〈アクセラレーターテーブルにあるかどうか〉っていう
チェックをしないといけないんです」
『そのためにハンドルを持ってるのね』
「だから、アクセラレーターテーブルを作って、そのとき受け取ったハンド
ルをこのメンバ変数に入れれば一応いいことになります。実際のコードはこ
んな感じ」

void CMainFrame::OnMenuTest() 
{
    // アクセラレーターテーブルを新しく作ります。
    ACCEL stAccel;
    stAccel.fVirt = FCONTROL | FVIRTKEY;
    stAccel.cmd = ID_FILE_OPEN;
    stAccel.key = 'B';
    HACCEL hAccel
        = CreateAcceleratorTable( &stAccel, 1 );
    // 古いアクセラレーターテーブルを削除します。
    DestroyAcceleratorTable( m_hAccelTable );
    // アクセラレーターテーブルへのハンドルを入れ替えます。
    m_hAccelTable = hAccel;
}

『あ、ちょっとだけ見慣れた感じが』
「まず ACCEL は構造体で、アクセラレーター１行分のデータを入れます」
『メンバ変数に入れてるの、なんとなく分かるのだね』

    stAccel.fVirt = FCONTROL | FVIRTKEY;

「はフラグ。 FCONTROL は Ctrl キーを押しながらっていう場合。 
FVIRTKEY は仮想キー」
『次の ID はいつもの【ファイルを開く】のね。その次の 'B' は、 B 、
じゃなくて Ctrl + B を押したらってなるわけね』
「そゆこと。で、 CreateAcceleratorTable() っていう API でアクセラ
レーターテーブルを実際に作ります」
『戻り値にハンドルが返ってくるんだね。第２引数の 1 って？』
「アクセラレーターテーブルの中の数」
『？』
「これが実は重要なポイントになるから、それは次回に置いておいて」
『次の DestroyAcceleratorTable() は…… Destroy ってくらいだから、メ
ンバ変数の古いハンドルを削除してるのかな』
「そう、 Version 7.04 ( No.124 ) とかで説明したとおり、リソースは使
わなくなったら削除する必要があるからね」
『ペンなんかを DeleteObject() するのと同じってことね』
「そゆこと。で、新しいアクセラレーターのハンドルを m_hAccelTable に
入れて完了」
『じゃ、ビルドして実行！』
「まず、最初の段階では Ctrl + B が効かないことを確認して」
『ほい機能しませーん』
「じゃ、メニューの【テスト】を選んで」
『ほい。んで Ctrl + B 、ファイルダイアログが出た！』
「というふうに追加できます」
『……あれ？　これってそんな難しくないよーな』
「これだけならね。ちょっと Ctrl + O 押してみて」
『ほい。ファイルダイアログが……表示しない！！　他のアクセラレーター
も全然使えなくなっちゃった！』
「というわけで、難しい話は次回に続きます」

/*
    Preview Next Story!
*/
『ってゆーか、水希ちゃんイジワルじゃない？』
「そうじゃなくて、ミスして、それを克服するのが重要だから」
『それは分かるけどー』
「ううん、たぶん分かってない」
『へ？』
「ミスしたあと、適当に試してうまくいった、っていうのじゃダメ」
『あー、なんでそれがダメなのか解らないといけないってわけね』
「というわけで次回」
＜ Version 9.08 今度こそアクセラレーターを追加する！ ＞
『につづく！』
「だから火美ちゃんにはわざと間違えてもらうんです」
『……なーんかやっぱヤダなー』


////////////////////////////////////////////////////////////////////
/*                ２００２年８月５日（月）の更新                  */
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
*/
////////////////////////////////////////////////////////////////////

