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

    KAB-studio.h


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

    送信日： 2002/11/04(Mon) No.180
    配信数： 3590 ( 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/10/27 (Sun)
　起きるの辛い。「洗濯」。次の表紙のアイディアが浮かばない。ああ、ネ
タをＧＥに盗られた……。トラックボール買うかなぁ。

2002/10/28 (Mon)
　こみパ、瑞希ルート。ちょっとショック（爆）。タイマーは買ってトラッ
クボールは買わず。新ＰＣは結局どうだったの？　「 OpenGL 」。そしてガ
ンダムＷ。語らずが吉？

2002/10/29 (Tue)
　死ぬほど眠い。ほとはーは実は近未来の話。あさひ、なんかいい感じだ。
「属性」。「属性」。「属性」。

2002/10/30 (Wed)
　バグがー。原因は変数の初期化忘れ。 Ever17 初回限定版。「桂花」。残
業モードでヘロヘロ。４たて……。そして attribute 。

2002/10/31 (Thu)
　眠くなる暇なし。がーっとテスト。ポケモンってもうすぐ最終回なの？　
「サトカス」。ぱぱっと表紙壁紙。

2002/11/01 (Fri)
　テスト大詰め。午後はソルパックディナー。お酒は「日本酒」が好き。お
ねてぃサントラいい感じ。タグジャンプ素晴らしい……。

2002/11/02 (Sat)
　KSK の研修が……。帰りに秋葉原で「ハブ」購入。ぴーぴー言われる。テ
レビは満月をさがしてがいい感じ〜。表紙壁紙……。


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

■　第五章　変化　−９−

　ふたりは一応バッグを持って、一階へと降りる。
　舞はその第一印象で敵意を持った。黒いＢＭＷに寄りかかり煙草を吸うそ
の女性は、同じ黒で統一した服で身を包んでいる。慎重は１８０ほど、その
スタイルはモデルとしても十分通用するものだと舞は感じた。その脇に立て
られた高価そうなゴルフバッグも、奇妙な威圧感を与えるのに役だった。
　サングラスを外し、女性はふたりを一瞥する。
「朴殿は？　わざわざ私が届け物を渡しに来てやってるんだ、直接受け取る
というのが筋だろう」
「今、病院にいます」
「病院？　はっ、まさか」
「本当です。普通の人なら瀕死の重傷でした」
「朴殿がそれほどの傷を負うとは……これが必要になるわけだ。で、その病
院は？」
「それより、あなたは誰なんです」
「答える義務はないな」
「じゃぁ、教えられませんよ？」
「ガキが何を言うのかと思ったら……大人を怒らせない方が、いいわよ」
「子供の私は、とっくに怒っているんですけど」
「へぇ、じゃぁ怒ったらさぞかし怖いんだろうな」
「試してみます？」
「やれるもんなら」
「じゃ」
　一瞬だった。宙を舞った水がその軌跡を刃と変え巨大な青龍刀が女性の喉
元に触れた。女性は、動けなかった。気付けば、一緒にいた少女もいない。
そして、背後に気配を感じる。リシュネは車の上に寝そべり、後頭部をつつ
いていた。
「私達だって、雅樹に勝るとも劣らない力を持ってるんだから。これからは
私達も「殿」を付けてもらわなくちゃね」
「泉の力、朴殿と同じ力か……」
「そういうこと。じゃ、あなたが誰なのか教えてくれる？」
　舞は水をペットボトルへと戻し、リシュネも車から降りた。女性は首を撫
でてから、額を拭いた。
「……名前は吉良　ゆかり。朴殿から頼まれていたものを持ってきただけ
だ」
「頼まれていたもの？」
「さぁ、さっさと病院へと連れていけ！　とにかく、直接渡すまでは帰らん
からな。もし、荷物だけ持っていくというのなら、死んでも渡さんからな。
渡したあとなら、どうとでもされてやる」
「そんな、別にそういうつもりで言ったわけじゃないんですけど……」
　投げやりな発言に気圧される舞を置いて、リシュネが一歩進み出て言う。
「じゃ、私達も連れてってください」
　リシュネはつかつかと歩き、車に乗った。舞は呆気に取られていたが、気
を取り直して自分も車に乗った。ゆかりは苦虫を噛み潰したような顔を隠そ
うともせずに、運転席へと乗り込み乱暴にキーを回した。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
「火美ちゃん、今月の表紙壁紙の感想は？」
『……なんであたしの顔が隠れてんの……！？』
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 10.03
ウィンドウプロシージャ！

「前回はウィンドウクラスの登録をしました」
『ちょっと駆け足だったね』
「そうだね、ウィンドウクラスについてはあとでまた触れるから、その時に
もう一度ちゃんとっていうのがあって」
『そういえばウィンドウクラス名がとっても重要とか言ってたね』
「そう、でもそれはとりあえずは置いておいていいことだから、後回し。そ
れよりもまずビルドが通るようにしたいから」
『動かないとつまんないもんね』
「ちなみに、今回だけじゃまだ動くようにはならないから」
『げ、そなの？』
「それだけ、 MFC を使わないウィンドウアプリは大変ってことだね」
『……じゃなくて』
「じゃなくて？」
『ダイアログプロシージャ使った時ってこんなに面倒じゃなかったじゃな
い』
「あ、そうだね。ダイアログじゃないウィンドウアプリも大変ってこと」
『ダイアログは簡単なのねー』
「ダイアログってそういうためのウィンドウだからね」
『お手軽ウィンドウ？』
「そういうこと。ダイアログひとつ作るのにこんな大変だと困るでしょ」
『ひとつ作るのにも困るけど……』
「さて。では今回は、ウィンドウプロシージャを作ります」
『ウィンドウプロシージャって、ダイアログプロシージャのウィンドウ
版？』
「っていうか、ダイアログプロシージャがウィンドウプロシージャのダイア
ログ版なんだけどね……」
『ウィンドウの方がえらいわけね』
「偉い……」
『で、ウィンドウプロシージャってダイアログプロシージャみたいなの？』
「うん、結構似てるし、でも違うところも結構あるかな」

// ウィンドウプロシージャ。
LRESULT CALLBACK WndProc
    ( HWND p_hWnd
    , UINT p_uiMessage
    , WPARAM p_wParam
    , LPARAM p_lParam
    )
{
    if( p_uiMessage == WM_DESTROY )
    {
        // ×ボタンが押されました。
        PostQuitMessage( 0 );
        return 0;
    }

    // 標準的な処理をします。
    return DefWindowProc( p_hWnd, p_uiMessage, p_wParam, p_lParam );
}

「これを Version 10.01 ( No179 ) の最後のコードの、」

#include <Windows.h>

「の下に追加して」
『 Version 8.07 ( No.179 ) のダイアログプロシージャは』

// ダイアログプロシージャ。
BOOL CALLBACK DialogProc
    ( HWND p_hDlgWnd
    , UINT p_uiMessage
    , WPARAM p_wParam
    , LPARAM p_lParam
    )
{
    return FALSE;
}

『と比べると、引数とかかなり似てるね』
「って言うか、実は全部同じ。 LRESULT は long 型から typedef されて
て、 long と int はほぼ同じだから」
『ほぼ同じ？』
「 long と int の関係については Version 4.08 ( No.058 ) を参照」
『 BOOL は int だって前回言ってたもんね。ウィンドウズから呼ばれるか
ら CALLBACK も付いてるし、引数も同じだし』
「ま、 BOOL が int と同じって言っても、 DialogProc() が返していいの
は一応 TRUE と FALSE だけ」
『ウィンドウプロシージャは好きな値を返せるってわけね』
「そゆこと。ダイアログプロシージャは簡単に使える分機能が少ない、って
ところかな」
『で……中身はどうなのかな』
「メッセージ関係はかなり違うから」
『げ、かなり違うの？』
「たとえば、ダイアログが最初に表示されるときに送られてくるメッセージ
ってあったでしょ」
『 WM_INITDIALOG だね。あ、 DIALOG って付いてるからこれはダイアログ
専用なんだ。ってことは WM_INITWINDOW とか？』
「そうじゃないんだよねー、ウィンドウの時は WM_CREATE ってメッセー
ジ」
『げ、全然違う！』
「前の章、 MFC の SDI アプリを作ったとき、 Version 9.03 ( No.164 ) 
で CMainFrame::OnCreate() でウィンドウの初期化をしてたでしょ」
『ツールバーとか作ってた時のね』
「そのメンバ関数を呼び出すメッセージ、 WM_CREATE が、ウィンドウが作
られるときに送られてくるメッセージ」
『ってことはつまり、同じようなイベントでも、メッセージが違うって事な
んだ。複雑〜』
「ま、同じものの方が多いけど、重要な部分で違うことが多いから、注意が
必要かな」
『ふーん』
「で、中身の話なんだけど、これは実際にプログラムが動くようになってか
ら触れることにします。
『はーい』
「……」
『……あと半分あるよ』
「……じゃあ、次回のコードを先に紹介しちゃいましょう。 WndProc() の
前にこの関数を追加して」

// メッセージループ。
int MessageLoop()
{
    BOOL bRes;
    MSG stMsg;

    // メッセージループです。
    while( 1 )
    {
        // メッセージをキューから取り出します。
        bRes = GetMessage( &stMsg, NULL, 0, 0 );
        if    ( 
                ( bRes == 0 )
            || 
                ( bRes == -1 )
            )
        {
            // 終了するのでループから抜けます。
            break;
        }

        // メッセージを変換します。
        TranslateMessage( &stMsg );
        // ウィンドウプロシージャに送ります。
        DispatchMessage( &stMsg );
    }

    return stMsg.wParam;
}

「で、 WinMain() を修正して」

// 最初に呼ばれる関数です。
int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    const char pchWndClassName[] = "SimpleWindowClass";
    
    bool bRes
        = RegistWndClass( pchWndClassName, p_hInstance );
    if( bRes == false )
    {
        return -1;
    }
    
    bRes
        = CreateAndShowWnd
            ( pchWndClassName 
            , p_hInstance
            , p_iCmdShow
            );
    if( bRes == false )
    {
        return -1;
    }

    // 以下の行だけ修正。
    return MessageLoop();
}

『どこが違うの？』
「最後の１行だけ」
『あ、ここでさっきの関数を呼んでるわけね』
「その関数が、ダイアログプロシージャにはない、メッセージループってい
うもの」
『めっせーじるーぷ？』
「そう、メッセージのシステムの中でもかなり難しい、一番深い部分にある
機能。というわけで次回に続く！」

/*
    Preview Next Story!
*/
『こ、コードばっか……』
「あとで全部まとめるから、今は我慢して」
『でもさ、こういうのだとつまみ食いできないよね』
「つまみ食い？」
『メルマガの』
「あー。まぁ、メルマガだからいいんじゃない？」
『テキトーねー』
「というわけで次回」
＜ Version 10.04 メッセージループ！ ＞
『につづく！』
「あ、でも別に HTML 化の計画がなくなったわけじゃないんだけどね」
『でも、全然始まんないし……』


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

