////////////////////////////////////////////////////////////////////
◆◆◆　ドメイン名の取得なら「Doレジ」で　◆◆◆◆◆◆◆◆◆
　必要事項を入力→決済方法を選ぶだけのお手続きで
　ドメイン名がスグにカンタンに低価格で取得できます！
　ドメイン２０件以上なら！DTMS！
　安心のICANN認定レジストラ
　http://af1.mag2.com/m/af/0000008658/001/s00000002601003/010
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2006 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    送信日： 2006/12/25(Mon) No.388
    配信数： 1677
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

/*                         来週はお休み                           */

来週、１月１日分の配信はお休みします。
ホームページの方も１月１日分の更新はお休みになります。
御了承ください。

////////////////////////////////////////////////////////////////////
// NEW!!
http://www.kab-studio.biz/index.html

2006/12/25 (Mon)
　ほとはー外伝３にP.85を追加！
[ 三人合体ホットハーブ 外伝３ 【ワタシ の キロク】 ]
http://www.kab-studio.biz/Comic/HotHerbA3/index.html

2006/12/25 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
17.24 スマートポインタと参照カウンター
17.25 戻り値の一時変数
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


////////////////////////////////////////////////////////////////////
// ちょお普通な日記
http://www.kab-studio.biz/nikki2/index.html

2006/12/17 (Sun)
　ホットカーペットで寝ると夢を見る。駄目な日。駄目な日はごはんを食べ
てしまう。今年を振り返る・２月。２月はダメダメな感じ。

2006/12/18 (Mon)
　元日用イラスト描き。なかなかいい出来。プール。今年を振り返る・
３月。３月はおしごと前の準備。

2006/12/19 (Tue)
　粗大ゴミの申し込みとか。昼寝してプール。今年を振り返る・４月。４月
はおしごと開始。そして電気ファンヒーターとかは。

2006/12/20 (Wed)
　おしかりCDとかコミックスとかネクタリスとか。今年を振り返る・５月。
５月はおしごとあるけどまったり。

2006/12/21 (Thu)
　風邪をひいたっぽい。ほとはー外伝３主線描き。今週と来週の予定。
今年を振り返る・６月。６月は講師先Ｃ社。

2006/12/22 (Fri)
　おしごとで１０時起き。昼１時に講師先Ｂ社にて説明会。Wii
インターネットチャンネルを試す。今年を振り返る・７月。６月は農閑期に
入ってぐだぐだと。

2006/12/23 (Sat)
　１１時に起きてKAB-studio.hの準備とか。３時半からフットサル。そのあ
と忘年会。


////////////////////////////////////////////////////////////////////
// かぶろぐ。
http://d.hatena.ne.jp/kab_studio/

2006/12/17 (Sun)
http://d.hatena.ne.jp/kab_studio/20061217
起きた。
[KAB-studio]ぷらとわ追加。
[KAB-studio][ほとはー]ほとはー外伝３ P.84
[アニメ]「牙」 第38話「終わりなき戦い」
[アニメ]おねがいマイメロディ〜くるくるシャッフル！〜 第38話「赤ずきんになれたらイイナ！」
[アニメ]乙女はお姉さまに恋してる 第11話「戸惑いの練習曲（エチュード）」
[アニメ]くじびきアンバランス 第11話「くらいところでつまずく。0点」
[アニメ]Gift 〜eternal rainbow〜 第11話「Giftの秘密」

2006/12/18 (Mon)
http://d.hatena.ne.jp/kab_studio/20061218
起きた。
[link]もしプログラマーが飛行機を作ったら
[水泳ダイエット]12月4回目
[アニメ]金色のコルダ 第12話「後ろめたさのピアニッシモ」
[アニメ]夜明け前より瑠璃色な Crescent Love 
　第11話「お姫様とその手をかさね」
[アニメ]ギャラクシーエンジェる〜ん 第12話「熱湯！コマーシャる〜ん」

2006/12/19 (Tue)
http://d.hatena.ne.jp/kab_studio/20061219
起きた。
[装備]粗大ごみ申し込み。
[装備]Wiiお天気チャンネルスタート！
[link]＜横濱カレーミュージアム＞来年３月末閉館へ　 
[水泳ダイエット]12月5回目
[きらら]まんがタイムきららMAX 2007年2月号
[アニメ]BLACK BLOOD BROTHERS 
　第12話「我が血統の永遠なる鼓動がためこの血の総てを捧げんことを」(終)
[アニメ]N・H・Kにようこそ！ 第24話「N・H・Kにようこそ！」(終)
[アニメ]Pumpkin Scissors 第12話「見えざる痛み」

2006/12/20 (Wed)
http://d.hatena.ne.jp/kab_studio/20061220
起きた……。
[買]おしかりCD
[買]コミックス購入
[買]ネクタリス（Wiiバーチャルコンソール）
[アニメ]DEATH NOTE
　「『デスノート』の裏側ド〜ンと見せちゃいますスペシャル！」
[アニメ]ブラックラグーン 第24話「The Gunslingers」(終)
[アニメ]ネギま！？ 第12話「まぁ、いろいろと
　理屈をこねたところで、とどのつまりは気持ちひとつなわけですが」

2006/12/21 (Thu)
http://d.hatena.ne.jp/kab_studio/20061221
起きた。
[買]うたわれるものらじお Vol.1
[アニメ]奏光のストレイン 第9話「目の前の自分」
[アニメ]武装錬金 第12話「カーニバル」

2006/12/22 (Fri)
http://d.hatena.ne.jp/kab_studio/20061222
起きた。
帰ってきた。
[装備]Wiiインターネットチャンネルスタート！
[アニメ]あさっての方向。 第12話「ここにいること」(終)
[アニメ]すもももももも〜地上最強のヨメ〜 
　第12話「風邪の日、半蔵の場合」

2006/12/23 (Sat)
http://d.hatena.ne.jp/kab_studio/20061223
起きた。
帰ってきた。
[アニメ]彩雲国物語 第31話「掃きだめに鶴」
[アニメ]おとぎ銃士 赤ずきん 第26話「赤ずきんvs白雪姫」
[アニメ]ふしぎ星の☆ふたご姫 Gyu! 
　第39話「ハッピークリスマス☆ビビンとなかよし計画」
[アニメ]コードギアス 反逆のルルーシュ 第11話「ナリタ攻防戦」
[アニメ]ウィンターガーデン(前編)
[アニメ]ローゼンメイデン・オーベルテューレ(前編「悠久」)


////////////////////////////////////////////////////////////////////
// Ajaxでエロゲーを作るブログ
http://d.hatena.ne.jp/AjaxEroge/

（今週はお休みです）


////////////////////////////////////////////////////////////////////
// 風雅、舞い
http://www.kab-studio.biz/Novel/Fuga/index.html

■　第十五章　濁る澱み、清らかな血溜り　−１６−

「これが四季、というものなんですよね」
「そうよね、このあと葉が落ちて、雪が降って、春になると芽が出て、夏に
はまた緑の葉がつくんだろうけど」
「それが生命の営みなのかな、って」
「生命の……？」
「生まれて死ぬ。枯れ落ちて生え替わる」
　それが、生物としての当たり前。
「ヒトも、古い細胞を捨て、新しい細胞を生み、それを積み重ねていくこと
で成長する」
　少年は湯から手を出し、眺める。その手のひらは、小さい子供の手。
「僕たちＡＰは、長寿と同時に不老も得た。この体は、老いることもなけれ
ば、成長もしない。僕たちの時間はここで止まってしまっている」
　大人になれない、ということ。
「両親が死ななかったことはもちろんうれしい、けれど、でも僕は、どうや
って育っていけばいいんだろう。子供として？　大人として？　甘えていい
の？　どうすればいいの？」
　再び少年は、空の木々を見上げる。
「たとえそこに、避けたい死というものがあったとしても……それでも、春
に生まれ、夏に育ち、秋に老い、冬に死す――その環は美しいと思うし、大
切な何かがあるような気がする。今の僕にはない何かが」
　その言葉を聞いて、舞も木々を見上げる。天井を覆う葉の変遷が、手に取
るように思い浮かぶ。
　春。雅樹と出逢ったあの公園は、桜の花びらが満開だった。
　夏。泉へと帰る道程、森の木々は濃緑色の葉をどこまでも生い茂らせてい
た。
　秋、こうしてその緑の葉を赤く染め上げて、やがて来る冬に備えている。
　手を伸ばせば、手のひらへと赤い葉がひらひらと落ちてくる。やがてすべ
ての葉は枯れ落ち、白い雪の中、裸となった木々は年を越す準備をするのだ
ろう。
　そしてまた、春には新しい芽が生まれる。
　四季の変遷を思い描けば、それは風流で美しく、雅であり荘厳であった。
　それを否定する者が、ここにいる。
「僕たちＡＰは、自然の摂理に反している。左さんは、この自然というもの
を相手に何をしようとしてるんだろう。反抗？　弄んでいる？　それと
も――」
　突然強い風が吹き、木々から葉を根こそぎ刈り取っていく。そして、無数
の葉が、ゆっくりと舞い落ちていった。
                                                              (続く)

////////////////////////////////////////////////////////////////////
// JavaA2Z
http://www.kab-studio.biz/Programing/JavaA2Z/index.html

■追加・更新単語

（今週の追加はありません）


////////////////////////////////////////////////////////////////////
◆◆◆　ドメイン名の取得なら「Doレジ」で　◆◆◆◆◆◆◆◆◆
　必要事項を入力→決済方法を選ぶだけのお手続きで
　ドメイン名がスグにカンタンに低価格で取得できます！
　ドメイン２０件以上なら！DTMS！
　安心のICANN認定レジストラ
　http://af1.mag2.com/m/af/0000008658/001/s00000002601003/010
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
////////////////////////////////////////////////////////////////////
// #pragma twice
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 18.01
ウィンドウプログラムをクラスで作る

「さて、今回が最終章になります！」
『と、とうとう最後……』
「この章では、 Version 8.01 ( No.143 ) から説明している、 API を使用
してダイアログを表示する、というプログラムを、クラスで作る説明をしま
す」
『んーと、あんときは WinMain() 関数とかダイアログプロシージャとか作
ったんだよね。あれをクラスで……ってことは、つまり普通の関数じゃなく
クラスで、ってこと？』
「そういうこと。今まで、ダイアログを含めてウィンドウプログラムを作る
という場合、以下の方法があります」

・ MFC を使用する方法
　→メリット　： MFC の膨大なクラスを使うことができる。
　　　　　　　　 Class Wizard を使用してイベントハンドラを作れる。
　→デメリット： MFC の仕組みをそのまま利用しなければいけない。
　　　　　　　　 SDI 、 MDI は非常に複雑になり、「ドキュメント」
　　　　　　　　というものをどうしても使わざるを得ない。

・ API を使用する方法（ MFC を使用しない方法）
　→メリット　：自由にプログラムを作ることができる。
　　　　　　　　 MFC のような制約に縛られない。
　→デメリット： MFC の便利なクラス（ CString クラス等）を使えない。
　　　　　　　　イベント処理がぐちゃぐちゃになりやすい。
　　　　　　　　ダイアログの入力値の取得が面倒。

「 MFC のメリットのひとつは、はっきり言ってまず CString が使えるこ
と」
『確かに、 API だけの時は大変だったね色々と……』
「CString クラスといった便利なクラスを持っている、それがまず MFC の
メリット。加えて、ダイアログなら、ボタンで右クリックして【イベント】
でイベントハンドラが作れる手軽さ」
『そうなんだよねー、ボタンが押されたときの処理、って MFC だと簡単に
できるんだよね。 API だと Version 8.10 ( No.152 ) みたいに、
ダイアログプロシージャで if 使ってチェックしなきゃいけないのに』
「このイベント処理がわかりやすいのが MFC のメリット。でも MFC はあま
りにもしくみががっちりとしすぎていて、プログラムの柔軟性があまりない
んです」
『柔軟性？』
「まぁあることはあるんだけど、すごく複雑だったり、あとは SDI とかの
〈ドキュメント〉の存在かな。 Version 9.01 ( No.162 ) で説明したよう
に、 MFC には〈ドキュメント／ビューアーキテクチャー〉というものが
あるんです」
『ひとつのウィンドウにつきファイルひとつ、とかだっけ』
「そうそう。この仕組みが実はとても複雑でわかりにくいんです。ウィンドウ
とファイルは別々のものだからね」
『それがくっついちゃってるからわかりにくい、と』
「だからファイル操作は Version 5.09 ( No.074 ) で別に説明しているん
です」
『なるほどねー』
「 MFC を使うことで柔軟なプログラムが作れない、だから MFC を使わずに 
API だけでプログラムを作る必要が出てくるんです」
『でも、デメリットもあると』
「まずは MFC が持ってる便利なクラスが使えない、っていう点。ただこれ
は回避方法があるから」
『え、あるの？』
「ファイル操作のところで説明した iostream 系のクラスを使う方法がある
から」
『じゃあそれはなんとかなる、と』
「で、もうひとつのデメリットは、イベント処理の問題。さっきも触れたけ
ど、たとえば【OKボタン】と【キャンセルボタン】が押された時の処理を
行う場合、 Version 8.10 ( No.152 ) の――」

// ダイアログプロシージャ。
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;
}

「この DialogProc() 関数みたいに、ダイアログプロシージャの中で if 等
を使用して処理を分ける必要があるんです」
『これだとすぐごちゃごちゃしちゃうよね……』
「それに、この方法だと、たとえばダイアログで計算機アプリを作る場合、
エディットボックスに入力された整数値を取得する必要があるけど」
『あ、そか、 Class Wizard 使えないから……』
「 Version 3.10 ( No.035 ) みたいな、メンバ変数への自動変換とかはさ
れないから、自分でやらなきゃいけないってこと」
『うわ、これは面倒そう……』
「そこで、そういった部分をクラスを使ったり自分でクラスを作ったりして
何とかしよう、というのが今回の章の話」
『……クラスを作ってなんとかする？』
「ぶっちゃけていうと、 MFC みたいに、クラスでウィンドウ処理をするっ
てこと」
『！　そんなことできるの？？？　まぁできるんだろうけど…… MFC は API 
使ってるだけって何度も教わってるし……』
「もちろんそのまま同じものは作れないけど、必要最小限の機能を持ってい
て、かつ MFC よりも柔軟なウィンドウ処理用クラスを、実際に作ってみよう
というわけです」
『なんか本格的……』
「もちろん。これが最終章なんだから」
『あ、そうだった』
「さて、この章では、 Version 3.10 ( No.035 ) の計算機アプリを例題に
します」
『おお！』
「で、まずは API だけでそのプログラムを作ってみます」
『……それって結構大変なんじゃない？』
「そうでもないよ、これまでの知識をそのまま使えばいいだけだから。さて、
まずはプロジェクトを作ります」
『はーい』
「まず Version 8.01 ( No.143 ) と同じ方法で、 API 用プロジェクトを
作ります。メニューから【ファイル】−【新規作成】を選んで、
【プロジェクト】のページで【Win32 Application】を選びます」
『うんうん』
「プロジェクト名は〈NewCalc〉にして OK ボタンを押して、あとは
【空のプロジェクト】を選んで【終了】ボタンを押せば完了」
『ほいプロジェクトできた』
「次にソースファイルを追加します。メニューの【ファイル】−【新規作成】
を選んで、【C++ ソース ファイル】を選んで、ファイル名には Main.cpp で
OK ボタンを押してください」
『 Main.cpp ができて開いたよ』
「そこに以下のプログラムを書き込んでください」

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

// ダイアログプロシージャ。
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 ) == IDC_B_EQUAL )
        {
            // 各エディットボックスのウィンドウハンドル
            // を取得します。
            HWND hLeftWnd 
                = GetDlgItem( p_hDlgWnd, IDC_E_LEFT );
            HWND hRightWnd 
                = GetDlgItem( p_hDlgWnd, IDC_E_RIGHT );
            HWND hAnswerWnd 
                = GetDlgItem( p_hDlgWnd, IDC_E_ANSWER );

            // 各エディットボックス用文字列を用意します。
            char pchLeft[256];
            char pchRight[256];
            char pchAnswer[256];

            // IDC_E_LEFT と IDC_E_RIGHT の文字列を取得します。
            GetWindowText( hLeftWnd, pchLeft, 255 );
            GetWindowText( hRightWnd, pchRight, 255 );

            // それぞれ int 型に変換します。
            int iLeft = atoi( pchLeft );
            int iRight = atoi( pchRight );
            
            // 足した結果を pchAnswer に文字列変換します。
            sprintf( pchAnswer, "%d", iLeft + iRight );

            // それを IDC_E_ANSWER にセットします。
            SetWindowText( hAnswerWnd, pchAnswer );

            return TRUE;
        }
    }
    return FALSE;
}

// WinMain() 。
int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    int iRet
        = DialogBox
            ( p_hInstance
            , MAKEINTRESOURCE( IDD_MAIN )
            , NULL
            , DialogProc
            );

    return 0;
}

「で、次回に続く！」
『その前にちょっとお試し……』
「あ、これまだ完成してないから」
『ええっ！？』

/*
    Preview Next Story!
*/
『うがーっ、ビルドしてもエラーになる！！』
「まだ足りない部分があるからね」
『足りない部分ってなにー！？』
「なんだと思う？　一応説明済みなんだけど」
『え”、えーっと……』
「というわけで次回」
＜ Version 18.02 計算機アプリを API だけで作る ＞
『につづく！』
「足りない部分があったみたいだね」
『げっ何そのしたり顔のオチは！！』


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/nikki2/index.html
・購読登録を解除したいときにはこのページで行なってください。
http://www.mag2.com/m/0000012198.htm
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2006 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

