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

    KAB-studio.h


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

    送信日： 2002/04/08(Mon) No.152
    配信数： 3770 ( 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/nikki2/

2002/03/31 (Sun)
　とりあえずのんびり。トレーディングカードゲームに興味あり。プリン
ター買うかも。横浜市長選行かず。テレビは最終回ふたつ。ひめくりあずま
んがが２００２年度へ。

2002/04/01 (Mon)
　プリンタ購入！　PM-950 を。画質はかなりいい感じ。セル塗りっぽい感
じがしっかり出てるなぁ。お仕事は月例会議とか。そして外付けから DVD 
って手も。

2002/04/02 (Tue)
　お仕事はドキュメント作成と、最後のインタビュー。帰ってからはぱ
ぱっとイラスト。ビデオデッキが再び不調(泣)。地上波と BS とで録れたり
もするけど。やきうスタート。でも見にくい。

2002/04/03 (Wed)
　仕事はチュートリアル作成と時間計算。どのプログラムも１人月あればで
きてる。スタートが遅かっただけかも。 CppUnit が VC5 でも使えた。別
バージョンだけど。ほしのこえ DVD 予約。新番組があんま？

2002/04/04 (Thu)
　CppUnit に目鱗もの。外から見るって重要ね。でも時間かかる。実際、ど
う CppUnit って使われてるんだろう。帰りにパスポートを取りにいこうと
思ったら今日は遅くまでやってない日。 .hack//SIGN がいい感じ。疲れが
取れない……。

2002/04/05 (Fri)
　仕事はせずにお引っ越し準備をして、そのあと飲み会へ行って騒いできて
おわり。

2002/04/06 (Sat)
　かなりのんびり。土曜の休みが久しぶりだし。リブレットのバックアッ
プ。 CD-R のプリントも。満月をさがしてがいい感じだ〜。そしてリブレッ
ト＋ AirH" とみずほ銀行。このプロマネって大変なんじゃ。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
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.10
コマンドと通知メッセージ

「前回は、ボタンを押したらダイアログを閉じるようにしました」
『ボタン押したときのメッセージを受け取って、 EndDialog() で閉じるん
だよね。そう考えると簡単かも』
「それは簡単に考えてるから」
『どゆこと？』
「ダイアログのメッセージを受け取るダイアログプロシージャ。同じよう
に、ウィンドウはすべて、ウィンドウプロシージャを持ってます」
『ダイアログプロシージャはウィンドウプロシージャの一種なんだもんね』
「そうそう、だからダイアログもウィンドウプロシージャを持ってるって言
えるし、それにウィンドウは全部持ってるわけだから、たとえばボタンも」
『ウィンドウプロシージャを持ってるんだ』
「……不思議に思わない？」
『何が？』
「ボタンを押したときのメッセージって、ボタンが受け取るけど」
『あ！　ってことはボタンのウィンドウプロシージャが受け取って、それっ
てダイアログのダイアログプロシージャが受け取らない……けど受け取って
るね』
「そう、この辺の仕組みをちゃんと把握しておくのが大事かな。まず、実際
にマウスを左クリックしたとかってメッセージについて」
『マウスを動かしたら WM_MOUSEMOVE みたいな？』
「そう、そんな感じのメッセージ。マウスの左クリック、ってメッセージは
なくて、左ボタンを押したときのメッセージとして WM_LBUTTONDOWN ってい
うのがあります」
『ほー、下げるのと上げるのとで別なのね。上げるのは WM_LBUTTONUP なん
だ』
「ボタンが押されたとかは、実際にはマウスの左ボタンが上がった時だか
ら」
『ボタン的には、 WM_LBUTTONUP がボタンが押されたって印なわけね』
「このメッセージについては、実際に Spy++ でボタンのメッセージを見て
いくと分かるから、一度してみて」
『 Spy++ については Version 5.28 ( No.093 ) を参照〜』
「というわけで、実際に〈ボタンで左クリックした〉ってメッセージはボタ
ンのウィンドウプロシージャが受け取ってます」
『つまりダイアログプロシージャが受け取ってないから、他の方法で受け取
らなきゃいけないわけね』
「そゆこと。そのための方法は３つあります」
『ひとつは、前回の WM_COMMAND ね』
「もう一度ダイアログプロシージャだけ見てみようか」

// ダイアログプロシージャ。
BOOL CALLBACK DialogProc
    ( HWND p_hDlgWnd
    , UINT p_uiMessage
    , WPARAM p_wParam
    , LPARAM p_lParam
    )
{
    if( p_uiMessage == WM_COMMAND )
    {
        if( LOWORD( p_wParam ) == IDOK )
        {
            // OK ボタンが押されました。
            EndDialog( p_hDlgWnd, IDOK );
            return TRUE;
        }
        else if( LOWORD( p_wParam ) == IDCANCEL )
        {
            // キャンセルボタンが押されました。
            EndDialog( p_hDlgWnd, IDCANCEL );
            return TRUE;
        }
    }
    return FALSE;
}

『ボタンが押されると WM_COMMAND ってメッセージが送られてきて、その
WPARAM の LOWORD に押されたボタンの ID が入ってるわけね』
「この WM_COMMAND は、ボタンを押したときだけじゃなく、メニューが選択
されたときや、アクセラレーターが実行されたときにも送られてきます」
『メニューはダイアログじゃないときの話よね。それはいいとして、アクセ
ラレーターって何？』
「アクセラレーターはリソース、あ、ダイアログとかアイコンとかのリソー
スって意味だけど、そのリソースのひとつ」
『ホントだ、【挿入】で Accelerator ってのがある』
「これを使うと、たとえば Ctrl+A とか押したときに、なんかのコマンドを
実行できるようになるんです」
『なんかのコマンド？　あ、 WM_COMMAND が送られるってことね』
「そゆこと。でもこれってあんまり使わないかも」
『余計なことされるとイヤだし。カスタマイズできるんなら別だけど』
「それやるとかなり大変……と、話を戻して。この WM_COMMAND は便利だけ
ど、これだけだとちょっと問題があるんだよね」
『問題？』
「ダイアログコントロールの中では、ボタンしか使えない」
『使えない……』
「まぁ使えなくはないんだけど、たとえばエディットボックスだと……やっ
てみようか。エディットボックスを貼り付けて、その ID を IDC_E_TEST に
して」
『ぺたほい』
「ダイアログプロシージャはこう」

BOOL CALLBACK DialogProc
    ( HWND p_hDlgWnd
    , UINT p_uiMessage
    , WPARAM p_wParam
    , LPARAM p_lParam
    )
{
    if( p_uiMessage == WM_COMMAND )
    {
        if( LOWORD( p_wParam ) == IDC_E_TEST )
        {
            OutputDebugString( "IDC_E_TEST\n" );
            return TRUE;
        }
    }
    return FALSE;
}

『ボタンとほとんど同じね。ビルドして実行！　うお、何やってもひっかか
る！』
「クリックしても、文字を入力しても、どんどん送られてきます。だから、
受け取ることはできるんだけど」
『なんで送られてきたかは分からないからどーしよーもないのね』
「いや、分かるんです」
『げ！　そーゆーことは先に言ってよ』
「まぁまぁ。この〈どういう理由でコマンドが送られてきたのか〉は 
HIWORD( p_wParam ) に入ってます。たとえばこんな感じ」

BOOL CALLBACK DialogProc
    ( HWND p_hDlgWnd
    , UINT p_uiMessage
    , WPARAM p_wParam
    , LPARAM p_lParam
    )
{
    if( p_uiMessage == WM_COMMAND )
    {
        if    (
                ( LOWORD( p_wParam ) == IDC_E_TEST )
            &&
                ( HIWORD( p_wParam ) == EN_UPDATE )
            )
        {
            OutputDebugString( "IDC_E_TEST, EN_UPDATE\n" );
            return TRUE;
        }
    }
    return FALSE;
}

『まず WPARAM の下２バイトが IDC_E_TEST かどうかチェックして、そのあ
と上２バイトが EN_UPDATE かどうか調べてて、その時だけ入るようにして
るのね』
「実際に試してみて」
『ほい。お、今度は文字を入力した時だけ出るようになった。それが
EN_UPDATE なの？　確かにアップデートだし』
「それが WM_COMMAND が送られてきた〈理由〉。これを【通知コード】また
は【通知メッセージ】って言います」
『つうちめっせーじ？』
「そう、英語だと Notify Code または Notify Message 。一般的には
〈コード〉よりも〈メッセージ〉の方が使われてるかも」
『のてぃふぁいめっせーじね。カタカナより、通知メッセージの方が分かり
やすいかも。だって、その〈意味〉を通知するって意味なんでしょ？』
「うーん、ちょっと違うかも。通知コードはダイアログコントロールからダ
イアログに送られてくるときに渡されるものだから」
『コントロールからダイアログへの通知？』
「そっちの方が意味としては強いかな。通知メッセージはホントはメッセー
ジじゃなくて、上で見たように LPARAM に入ってます」
『だから通知コードって言うこともあるのね』
「でも通知コードって呼ばれてるのはあんまり聞かない……話を戻して、通
知メッセージは EN_UPDATE みたいに N が付いてます」
『 E が Edit の E 、 N が Notify の N ね』
「ちょっとメッセージを整理しておこうか。普通のメッセージは WM_ で始
まるよね」
『 WM_COMMAND とかね』
「通知メッセージは、たとえばエディットボックスだったら EM_ で、ボタ
ンだったら BN_ で始まります」
『そっか、それがわかればそれで検索すれば通知メッセージ一覧が出るね』
「そうそう、そうやって調べるといいかもね。たとえば MSDN の
Edit Control Messages ってページにはエディットボックス関連のメッセー
ジ一覧が載ってて」
『 EN_UPDATE とかもあるね。あれ？　 EM_CANUNDO とかって何？　 EM_ か
ら始まってる』
「これはエディットボックスに送るメッセージ。こういう、コントロールに
送るメッセージとかもあるんです。コントロールを操作するためにね」
『ボタンだったら BM_ なんだ。 M は Message の M ？』
「たぶん」
『コントロールまわりだと、全部で３つのメッセージがあるってことなの
ねー』
「まとめると」

WM_ ： 普通のメッセージ。ウィンドウプロシージャで受ける
*M_ ： コントロールに送って操作する。 EM_ とか
*N_ ： 通知メッセージ。コントロールから WM_COMMAND と一緒に来る

「あ、最後のはちょっと違うかな」
『違う？』
「というわけで次回に続く！」

/*
    Preview Next Story!
*/
『メッセージひとつでも結構奥が深いよねー』
「でも次回は MFC の話」
『なんですとー！？』
「やっぱり、 MFC は便利だから」
『なら MFC だけにすればいいのに』
「ううん、っていうか、 MFC を参考に、 MFC を使わない方法を」
『勉強しようってことね』
「というわけで次回」
＜ Version 8.11 ツリービューコントロールを作ろう！ ＞
『につづく！』
「 MFC は使わないに越したことないから……」
『でも MFC は便利なんでしょ？』
「便利なんだよね……」


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

