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

    KAB-studio.h


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

    送信日： 2003/01/20(Mon) No.190
    配信数： 3390 ( 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/Info/Kaburaya/


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

・ほとはー追加
　三人合体ホットハーブに１話追加しました。やっとこさ３章の最終回で
す。
[ 三人合体ホットハーブ ]
http://www.kab-studio.com/Comic/HotHerb/


////////////////////////////////////////////////////////////////////
/*                        ちょお普通な日記                        */
http://www.kab-studio.com/nikki2/

2003/01/12 (Sun)
　昨日の夜にメルブラにはまる。起きてすぐ会社へ。ドキュメント管理に 
Wiki ？　MSDN 継続はしません。なんかナーバス。メルブラ冒頭の街並みが
すごく立川っぽい……。

2003/01/13 (Mon)
　すごく眠い。メルブラがいい感じ。「都古」って「とこ」じゃないのね。
今日は誕生日。この１年で大きく変わった。そしてこの気持ち。魔法遣いに
大切なこととせらむんがいい感じ。

2003/01/14 (Tue)
　起きるの辛い。 doPost() が２千行。帰りにどれみ同人誌とか購入。引き
続き WOLF'S RAIN がいい感じ。かなり疲れてるかも。そして WOLF'S RAIN 
と菅野さん。

2003/01/15 (Wed)
　今日はかなり辛い。突貫工事でやや危険。結局会社では士朗正宗マウスを
使うことに。ななかがいい感じ。メルブラとわくわく７。そして菅野さん。
色が出るのっていいのかねぇ。

2003/01/16 (Thu)
　今日はさらにヤバい。前プロジェクトので色々あったり。ものの好み。
色々好きだけど、推理ものだけはダメ。

2003/01/17 (Fri)
　引き続き辛い。考えることに時間取られる。 JSP まわりが面倒。 
Kanon DVD まだ売ってない。マルチディスプレイ環境構築予定。２Ｄ重視
で。ほとはーちゃんと描きます。

2003/01/18 (Sat)
　休出して５時までお仕事。ソバレベル。「インターフェイス」。ビデオ
カードは買ってません。久々介一家。 ANUBIS ZONE OF THE ENDERS が良さ
そうなんで予約。


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

■　第六章　帰郷　−４−

「……どうしたのよ、その傷」
　変わって、男湯より幾分大きい女湯に、恭子の声がこだました。泡に包ま
れた舞の体に、無数の傷があった。傷と言っても、猫に引っかかれた程度の
ものだったが、その数は尋常ではなかったし、体全体を被っていた。
「水を操る練習でどうしても着いちゃうのよ。でもね、これって簡単に消え
るの」
　傷のひとつを人差し指でなぞれば、マジックのように消えていた。
「全部消すのめんどくさいし、それに……未熟さの証拠だから」
「舞……」
　用心のために持ってきてある護符を一枚取ってから、泡を洗い落とさない
まま立ち上がる。湯船の前に立ち、一回深呼吸をする。林とで挟むガラスの
壁に、舞の裸体が反射している。そのガラスと舞との間を、ひらひらと護符
が落ちていく。
<I>「水よ、我が意の元に！！」</I>
　噴き上がる水は天井近くでＵターンし、そして舞の上へと落ちた。床を満
たす湯とともに、泡が流れ落ちていく。風呂の中はとたんに霞がかった。
「ほらね、やっぱり」
「やっぱりって……何が？」
　舞の左手が右肩をなでる。目を凝らしてよく見れば、そこにかみそり負け
のような傷がいくつか現れていた。
「……他の傷も、そうやって着いたってこと？」
「そう。水の硬化度をコントロールできてない証拠。このくらいできな
きゃ、どうしようもないのにな……」
　もう一度、今度は桶で湯を浴びてから、湯船へと入る。肩まで浸かり、上
を向いて、目を閉じる。そして、ゆっくりと息を吐く。
「ホント、雅樹の足を引っ張るだけだね」
「そんなことないでしょ？　だって」
「……雅樹ってホント、戦う事に関してはとんでもなく強い……ううん、雅
樹と穂香さんが強い、って感じかな」
「舞……」
「相手が数人いるときとか、なんて言うのかな、戦術では分からないけど、
戦略の腕っていうのはとんでもない。そういうとき、私は足手まといになっ
ちゃう」
「なんで？」
「指揮官は、穂香さんだから」
　目を開ければ、そこには高い天井だけがあった。
「穂香さんが考えて、雅樹が実行する。私は穂香さんの考えを雅樹からしか
聞けない」
「穂香さんのこと、認めてるんだ」
「……もう、そうとしか考えられないかも……」
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『最近、駄目ね』
「駄目だね……」
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 10.12
コード全体

「えーっと、ごめんなさい」
『ごめんなさい？』
「たぶん、前回までで、 Main.cpp はこういう感じのコードになってると思
います」

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


// ウィンドウプロシージャ。
LRESULT CALLBACK WndProc
    ( HWND p_hWnd
    , UINT p_uiMessage
    , WPARAM p_wParam
    , LPARAM p_lParam
    )
{
    if( p_uiMessage == WM_DESTROY )
    {
        // ×ボタンが押されました。
        PostQuitMessage( 0 );
        return 0;
    }
    else if( p_uiMessage == WM_COMMAND )
    {
        if( LOWORD( p_wParam ) == ID_MENU_TEST )
        {
            // ID_MENU_TEST メニュー。
            OutputDebugString( "ID_MENU_TEST : 終了します。\n" );
            PostQuitMessage( 0 );
            return 0;
        }
    }

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


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

    // アクセラレーターをリソースから読み込みます。
    HACCEL hAccel
        = LoadAccelerators
            ( p_hInstance
            , MAKEINTRESOURCE( IDA_MAIN ) 
            );

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

        iAclTranslated
            = TranslateAccelerator( stMsg.hwnd, hAccel, &stMsg );
        if( iAclTranslated != FALSE )
        {
            // 変換したのでメッセージ変換とディスパッチはしません。
            continue;
        }

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

    return stMsg.wParam;
}


// ウィンドウクラスを登録します。
bool RegistWndClass
    ( const char *const p_pchWndClassName
    , HINSTANCE p_hInstance
    )
{
    // ウィンドウクラス登録用構造体。
    WNDCLASSEX    stWndClassEx;
    stWndClassEx.cbSize = sizeof( stWndClassEx );
    stWndClassEx.style
        = CS_BYTEALIGNWINDOW | CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
    stWndClassEx.lpfnWndProc = WndProc;
    stWndClassEx.cbClsExtra = 0;
    stWndClassEx.cbWndExtra = 0;
    stWndClassEx.hInstance = p_hInstance;
    stWndClassEx.hIcon = LoadIcon( NULL, IDI_EXCLAMATION );
    stWndClassEx.hCursor = LoadCursor( NULL, IDC_ARROW );
    stWndClassEx.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
    stWndClassEx.lpszMenuName = NULL;
    stWndClassEx.lpszClassName = p_pchWndClassName;
    stWndClassEx.hIconSm = LoadIcon( NULL, IDI_EXCLAMATION );

    // ウィンドウクラスを登録します。
    if( RegisterClassEx( &stWndClassEx ) == 0 )
    {
        // 失敗しました。
        return false;
    }

    return true;    
} 


// ウィンドウを作ります。
bool CreateAndShowWnd
    ( const char *const p_pchWndClassName
    , HINSTANCE p_hInstance
    , int p_iCmdShow
    )
{
    // ウィンドウを作ります。
    HWND hWnd = CreateWindow
        ( p_pchWndClassName
        , "テスト"
        , WS_OVERLAPPEDWINDOW
        , CW_USEDEFAULT
        , 0
        , CW_USEDEFAULT
        , 0
        , NULL
        , LoadMenu( p_hInstance, MAKEINTRESOURCE( IDM_MAIN ) )
        , p_hInstance
        , NULL 
        );

    if( hWnd == NULL )
    {
        // ウィンドウの作成に失敗しました。
        return false;
    }

    // ウィンドウを表示します。
    ShowWindow( hWnd, p_iCmdShow );
    UpdateWindow( hWnd );
    return true;
}


// 最初に呼ばれる関数です。
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( p_hInstance );
}

「……以上」
『げ、今回これだけ？？？』
「全体のコードを一度まとめておこうと思って。それに、これからはあまり
変える部分はないから」
『どういうこと？』
「ウィンドウクラスを作ったり、ウィンドウを作ったり、メッセージループ
でディスパッチしたり、っていう部分は今回のである程度完成形」
『特に何かしない限り、このまま使えるってことね』
「そういうこと。逆に色々変えるのがウィンドウプロシージャ」
『いろんなメッセージに対応しなきゃいけないんだもんね』
「というわけで、次回からはメッセージの処理について見ていきます」

/*
    Preview Next Story!
*/
『確かにまー、メールマガジンだとこーゆーの難しいよね』
「来週からはちゃんと関数単位だから」
『それはそれでよくなくない？』
「うん、その号だけで試すことはできないんだよね」
『やたら長いのもアレだし、難しいよね』
「難しいね……」
『というわけで次回』
＜ Version 10.13 ポップアップメニューふたたび ＞
「につづく！」
『でもその〈ポップアップメニュー〉も前の続きなんだし』
「続き物ってことでいいってこと？」
『そう割り切っちゃおうってこと』


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

・縮刷版更新
　KAB-studio.h が１９０号に達したので縮刷版を更新します。
　……ゴメン、ほとはーは２週間お休みってことで……。


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
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 - 2003 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/
////////////////////////////////////////////////////////////////////

