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

    KAB-studio.h


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

    送信日： 2003/03/31(Mon) No.200
    配信数： 3200 ( 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/

・かぶヘッダー縮刷版更新。
　KAB-studio.h が２００号になったので縮刷版を更新しました。ダウン
ロードはダウンロードルームにて。
[ ダウンロードルーム ]
http://www.kab-studio.com/Freeware/index.html#MailMagazine


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

2003/03/23 (Sun)
　休日を満喫。午後はこみパ。由宇と千紗ちゃんを。でもちゃん様が一番。
夏コミほとはー。爆オンはアンジャッシュ優勝！　アナログ＞デジタル。デ
ジタル化は反対だなぁ。

2003/03/24 (Mon)
　なんか体痛い。フレッツＡＤＳＬ開始。ネットワーク構成。ぷちぷりユー
シィ最終回。千紗ちゃんでバッドエンド。猫っぽいキャラはあんま。

2003/03/25 (Tue)
　コネクションプールとデッドロック。 Digester 便利。逆ポーランド記法
だな。よく実装できるなぁ。帰りにハンターｘハンターＤＶＤとか購入。コ
ミックスもがんばってー。

2003/03/26 (Wed)
　明日がリリース日なんで遅くまで。 Ant + JUnit 。ヒートガイジェイ
が……。全部固定 IP で。 NetBIOS 通したかったから。

2003/03/27 (Thu)
　お仕事は Oracle のコネクションセッションがタイムアウトしない〜。
無敵看板娘はかなりいいなぁ。テレビは最終回が目白押しだけど。なんとな
くロボコップ。

2003/03/28 (Fri)
　お仕事てんてこまい。残業代とかでお金は潤沢？　おねてぃＤＶＤ、の
ラジオドラマがぶっ飛んでる……。ＰＣ版 Ever17 が出る！　超期待〜。

2003/03/29 (Sat)
　ほとはーとぷらとわ。タブレットが壊れたっぽい？　Post.Office 高ー。
メールサーバーって普通なに使われるの？　Java とかイラストとか。
満月をさがして最終回！！　時代は今、久瀬？


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
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.22
SDK のまとめ、そして文字列へ

「さて、 SDK だけでプログラムを作るのは今回まで。どう、感想は？」
『なんか全然違う……けど』
「けど？」
『 MFC と違って、わけわかんないっていうの、少ないかも』
「確かに API の所まで全部自分でコーディングするから、把握はしやすい
ね」
『でもやっぱり、 MFC の方が便利かも』
「うん、それはたぶんそうだよ」
『……じゃあさ、 SDK だけで作る意味って？』
「僕が一番重要だと思うのは、単に MFC を使うよりもずっといいってこ
と」
『あ、そっか、 MFC が何をしてるかってこれでわかるんだもんね』
「 MFC をただ使ってるだけだと、まるで MFC こそがすべてって感じちゃう
けど、そうじゃなくて、本当は SDK を使ったプログラムがあって、 MFC は
それを手助けしているだけっていうこと、がわかればいいかな」
『ってことは、今回の SDK のと MFC のを見比べれば』
「……」
『？　どったの？』
「実は、それは難しい部分もあるかな」
『どゆこと？』
「たとえば、ウィンドウプロシージャ」

// ウィンドウプロシージャ。
LRESULT CALLBACK WndProc
    ( HWND p_hWnd
    , UINT p_uiMessage
    , WPARAM p_wParam
    , LPARAM p_lParam
    )
{
    if( p_uiMessage == WM_CREATE )
    {
        return OnCreate( p_hWnd, p_wParam, p_lParam );
    }
    else if( p_uiMessage == WM_DESTROY )
    {
        return OnDestroy();
    }
    else if( p_uiMessage == WM_RBUTTONUP )
    {
        return OnRButtonUp( p_hWnd, p_wParam, p_lParam );
    }
    else if( p_uiMessage == WM_COMMAND )
    {
        if( LOWORD( p_wParam ) == ID_MENU_TEST )
        {
            return OnMenuTest( p_hWnd, p_wParam, p_lParam );
        }
    }
    else if( p_uiMessage == WM_CHAR )
    {
        return OnChar( p_hWnd, p_wParam, p_lParam );
    }
    else if( p_uiMessage == WM_PAINT )
    {
        return OnPaint( p_hWnd, p_wParam, p_lParam );
    }

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

「 MFC ではこんな方法してません」
『ええっ！？』
「だって、たとえば ID_MENU_TEST とか」
『 MFC に書き込むわけにいかないもんね、毎回違うんだから……』
「 MFC の場合は、メッセージマップっていう特殊な方法を使ってます。た
とえば、ダイアログのクラス、 ***Dlg.cpp ってクラスの最初の方に」

BEGIN_MESSAGE_MAP(CT_DlgJunk20Dlg, CDialog)
    //{{AFX_MSG_MAP(CT_DlgJunk20Dlg)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

「って部分があると思います」
『うん、ある』
「この中に IDC_BUTTON1 って書かれてる部分があるでしょ」

    ON_BN_CLICKED(IDC_BUTTON1, OnButton1)

『あ、これってボタンの ID っぽい』
「そう、その通り！　これは、 WM_COMMAND で IDC_BUTTON1 が送られてき
たら OnButton1() を呼んでください、って意味なんです」
『？？？　なにそれ、 VC の機能？？？』
「ううん、 MFC の……これはマクロ」
『マクロって、置き換えるのだよね』
「そう、 Version 6.05 ( No.105 ) を読み返してみると分かると思うけ
ど、これがちゃんとした C++ のコードに変換されるんです」
『そうなると？』
「ウィンドウプロシージャの」

    else if( p_uiMessage == WM_COMMAND )
    {
        if( LOWORD( p_wParam ) == ID_MENU_TEST )
        {
            return OnMenuTest( p_hWnd, p_wParam, p_lParam );
        }
    }

「的なコードが作られるってわけ」
『おお！』
「まぁ今のはかなりざっくりとだけどね。ホントはもっと細かくて難しいか
ら、今は説明はパス」
『いつか教えてもらえる？』
「もちろん。 MFC くらい読めるようになってもらわないと」
『そうなんだ』
「実際、このくらいは作れるようにならないとね」
『作る！？』
「言ったでしょ、 MFC だって」
『 SDK で作ったのの代わり。だから自分でも作れる……』
「この MFC のメッセージマップの機能だって、自分で作ることもできる
し、改良型だって作れるだろうし」
『あ、作るって言えば、さっきのメッセージマップのって、あたし初めて見
たけど……いつの間にあんなのが？』
「あれは、 ClassWizard でイベントハンドラを作ると、 VC が入れてくれ
るんです」
『ああ！　そーゆーことなんだ』
「 MFC は実際、 VC なしで使うのはかなりつらいから、 MFC と VC はペア
ってことになるかな。さて！」
『さて？』
「さっきも言ったように、今回で SDK 編は終わり。次回からは文字列につ
いてしっかり見ていきます」
『文字列？　前にやったよね』
「 Version 5.04 ( No.069 ) とかだよね。でも、まだまだまだまだ勉強し
なきゃいけないことがいっぱいあるんです。たとえば」


// キー入力がありました。
LRESULT OnChar
    ( HWND p_hWnd
    , WPARAM p_wParam
    , LPARAM p_lParam
    )
{
    // 入力された文字を取り出して、文字列にします。
    char ch[2];
    ch[0] = (char)p_wParam;
    ch[1] = '\0';
    // それをくっつけます。
    if( strlen( g_pchText ) < TEXT_MAX_LENGTH )
    {
        // 文字列サイズをオーバーしてないのでくっつけまず。
        strcat( g_pchText, ch );
    }

    // そして再描画。
    InvalidateRect( p_hWnd, NULL, TRUE );
    return 0;
}

『このまえのキー入力の部分だね』
「ここ、文字を文字列にくっつけるって部分で」

    if( strlen( g_pchText ) < TEXT_MAX_LENGTH )

「ってしてるでしょ。これは g_pchText のサイズを超えないようにチェッ
クしてます」
『それくらいわかるよ。 strlen() って文字列のサイズがわかるんだもん
ね』
「でも、それってつまり TEXT_MAX_LENGTH よりも大きな文字列は入らない
ってことでしょ？」
『そういえば！　全然テキストエディタっぽくない！』
「こういう場合、サイズが固定の文字配列じゃなくて、可変のものを使わな
きゃいけないんです。たとえば CString とか」
『 CString って長さが変わるんだ。でも CString って MFC のでしょ？』
「だから今回は使えないでしょ。それじゃ、 SDK の時には」
『長い文字列が使えない！？』
「ってなったらまずいから、その辺の勉強をします。さらに！」
『さらに？』
「文字列関係の処理は、慣れてないととっても手間取るんです。たとえば」

AAA1524,300,Z
0123F,100,Z
LLF33,200,F

『な、何これ……』
「こういうデータがファイルに入っています。データは各行でカンマ区切
り、１列目はアルファベット３文字の後に整数値、２列目は整数値、３列
目は１文字になってます」
『う、うん……？』
「このデータを１列目の整数値の部分で昇順にソートして一覧表示せよ。
ただし１列目はフォーマットが異なるものも含まれているのでそれは除
く。また、３列目に対して」

F,油揚げ
Z,揚げ玉

「というデータの入っている別ファイルから検索して、第１列目のうち該当
するものの第２列目を表示せよ」
『……つまり』

LLF33,200,油揚げ
AAA1524,300,揚げ玉

『ってことだよね』
「それをプログラムで」
『……不可能！！』
「というわけで次回からはそういうのを教えていくから」

/*
    Preview Next Story!
*/
『っつーかそーゆーのってホントに必要？』
「お仕事ではよくあるパターンだから、こういうのは自然にできないと」
『難しそう……』
「ま、普通は関数化していつでも使えるようにするんだけどね」
『じゃ、その関数ちょうだい』
「ダメ」
『ケチー』
「というわけで次回」
＜ Version 11.01 文字列ってなんだっけ ＞
『につづく！』
「ちゃんと基本を理解してから、だよ」
『う”−う”−！！』


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

