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

    KAB-studio.h


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

    送信日： 2002/09/30(Mon) No.176
    配信数： 3600 ( 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/

Ｃｏｄｉａｎをやや修正。
　Codian のシステムフックのページをちょっとだけ修正しました。フォル
ダとファイル、変わらないようで大きく違う……。
[ Codian ]
http://www.kab-studio.com/Programing/Codian/
[ システムフック ]
http://www.kab-studio.com/Programing/Codian/DLL_Hook_SClass/08.html


////////////////////////////////////////////////////////////////////
/*                        チョー普通な日記                        */
http://www.kab-studio.com/nikki2/

2002/09/22 (Sun)
　午前中はぷらとわ書き、お昼にラーメン、午後はカタログ作り。それから
ずっと AIR 。しょっぱな観鈴ちんシナリオ……。泣いた記憶。

2002/09/23 (Mon)
　AIR 良かったですー。泣ける度なら Kanon 以上。シナリオに偏りがあっ
たりキャラが弱かったりはあるけど。音楽はかなりよし。やっといた方がい
い度は Kanon より上。 AIR したあと会社に提出するカタログ作り。データ
をどう送るかなー。

2002/09/24 (Tue)
　今日は体調悪かった。昨日作ったマイパンフレットを公開（注：このメル
マガを読んでる方は見られません……）。舞パンフレット。お仕事はドキュ
メント作成とか。プレステ２版 AIR 購入。佐祐理さんだ。その他購入。思
い出すだけで……。最終回がいっぱい。

2002/09/25 (Wed)
　体調悪い。背中痛い。仕事はドキュメント作成。プログラムはバージョン
管理がちょっと大変。 CString::operator LPCTSTR() って危険。月姫ファ
ンブックっていつ発売？　いい座椅子買うかな。そしてマイパンフレットの
ツッコミふたつ。 InternetDisk が公開不可に……。

2002/09/26 (Thu)
　早く寝たら２度目が覚めた。お仕事は Java のお手伝い。 AIR サントラ
は買ったけど聴くのは先。西武優勝おめでとー。

2002/09/27 (Fri)
　お仕事は Apache サーバー。類似の設定がいっぱいあるのが判りにくい。
ポテトの声が変。いいんだけど。人体工学について詳しい本ってない？？

2002/09/28 (Sat)
　夜中は５人でだべって酷いこと言われて（爆）。日中はぐたーっと。月姫
パーフェクトファンブック。 Kanon のＤＶＤ、だけじゃなくドラマＣＤも
欲しいけど、出費が……。夜になってからかぶヘッダー書いたり。美凪って
いいよね。 USER'S-SIDE 、ちょっと不安……。


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

■　第五章　変化　−４−

「つまり、穂香は幽霊みたいな存在なんだ。どの場所のどんなもんでも見え
るし、どんな人間のどんな会話も聞こえる。何でもな、赤外線とかエックス
線とか、そういうもの見えるんだとよ」
　そう解説しながらいちいち確認を取る雅樹と、驚きながらも真剣に話を聞
くリシュネが舞にはかわいく見えた。
「でだ、そんなんだととにかく情報がどんどん入ってくるわけだ。そこで、
情報にフィルターを掛ける。言ってみれば、締め切った部屋の中に窓を作る
ようなもんだ……よな？」
「だから、この前のヘリコプターにも気付いた……」
「そういうこと。俺はこのリシュネのバックアップ能力のおかげで、思う存
分戦えるってこった」
　舞は、それは雅樹の謙遜だと感じた。たとえ的確な情報を得られたとして
も、それを冷静に行動へと移せる雅樹の能力は相当なものだ。
「その穂香とは、いつどこで出逢ったんですか？」
　まだ自分も知らない情報を得られるかと舞ははっとするが、雅樹は笑むだ
けだった。
「今回はここまで。今度はそっちの情報を知りたいな」
「……私も知りたいな、穂香さんのこと……」
「えっ……」
　ぼそりと呟いたその言葉に、雅樹は動揺を隠せなかった。
「……正直、まだ話す気、ないわ。すまん」
　その言葉を聞いたあと、一回、ゆっくりと首を振った。
「ううん、いいの。じゃ、リシュネ、話訊かせてもらえる？」
「え、あ、はい……」
　このふたりのやりとりを見てリシュネは、どういう関係なのだろうと考え
ていた。そして、話しづらい穂香の存在とは……。
「んじゃま、やっぱあの洋一って男の本当の目的、それからだな」
「そうね、なんか私達踊らされてるみたいでいい気しないもん」
「それは私も同じ……別にイヤじゃないけど」
　窓から冷たい風が吹き込み、空気を冷やす。
「私達――ＡＰ、洋一、先生、スタッフのみんなは、天地生物科学工業とい
う会社にいたの。その会社があの怪物を作ってる。雅樹を襲った辻って男
も、その会社の人」
「なんだ、その会社は」
「来年の春に降り立つ闇は知ってるでしょ？　あれを倒す、そういう口実で
ＬＷを世間に認めさせる、そういう計画だった」
「認めるって……」
「兵器として」
　ふたりは、顔を見合わせた。
「とんでもない一大イベント。この機会に日本を、これまでの概念を覆すよ
うな兵器を配備した軍事大国にする、それがこの計画の発端だったの……」

                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『……ぷらとわＨＴＭＬ化って……どうなった？』
「……全然進行してないらしいよ……」
『ダメじゃん……』
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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


　Version 9.15
ちょっとテキストエディタっぽく！

「今回からは、ビューウィンドウに描画してみます」
『あ、そういえばそれって全然してなかったね』
「ビューはマウスとかの入力を受けるためのものだけど、同時に表示をする
ためのものだから、両方ともできないとね」
『入力って、前に右クリックメニュー作ったときみたいに？』
「そうそう、それが入力。で、今度はそれに対する出力ってことだね」
『簡単？』
「デバイスコンテキストって憶えてる？」
『うん、画面に描くときに……そっか！　ビューでもそれは変わんないん
だ！』
「そゆこと。デバイスコンテキストについては Version 7.01 ( No.121 ) 
を読み返してもらうとして、さっそくやってみようか。えっと、 
Version 9.05 ( No.166 ) のままなら、右クリックしたときのメンバ関数
ってこうなってるよね」

void CSdiTestView::OnRButtonUp(UINT nFlags, CPoint point) 
{
    // 画面上のマウスカーソルの位置を取得します。
    CPoint cPoint;
    GetCursorPos( &cPoint );
    // フレームウィンドウのポインタを取得します。
    CWnd *pcMainFrameWnd
        = AfxGetMainWnd();
    // メニューバーを取得します。
    CMenu *pcMenuBar = pcMainFrameWnd->GetMenu();
    // 「ファイル」サブメニューを取得します。
    CMenu *pcFileMenu
        = pcMenuBar->GetSubMenu( 0 );
    // ポップアップメニューを表示します。
    pcFileMenu->TrackPopupMenu
        ( TPM_LEFTALIGN | TPM_TOPALIGN | TPM_LEFTBUTTON
        , cPoint.x
        , cPoint.y
        , pcMainFrameWnd
        );

    CView::OnRButtonUp(nFlags, point);
}

『うん。右クリックメニューのだよね』
「この時と同じように、あるイベントのメンバ関数を作ってもらいます」
『ハンドラってやつよね。で、なんの？』
「キー入力の」
『お！　なんかちょっとすごそう』
「すごくはないと思うけど……メッセージは WM_CHAR 」
『それはべたね。作り方は右クリックの時と同じ？』
「同じで大丈夫」
『んじゃ ClassWizard 開いて〜 CSdiTestView を選んで WM_CHAR でメンバ
関数作って編集っと』

void CSdiTestView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
    // TODO: この位置にメッセージ ハンドラ用のコードを（略）

    CView::OnChar(nChar, nRepCnt, nFlags);
}

『って感じにできました』
「これが MFC が用意してくれた WM_CHAR のハンドラ関数。この第１引数に
押された文字が入ってます。というわけで、次のように修正して」

void CSdiTestView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
    TRACE( "%c", nChar );

    CView::OnChar(nChar, nRepCnt, nFlags);
}

『 %c ？』
「 Version 5.04 ( No.069 ) でやったよ」
『あ、文字の時はこれなのね。んじゃビルドして実行！　おお！　キーボー
ド叩くとアウトプットにその文字が！　ちょっと感動……』
「この文字を、実際にビューに表示させるとエディタっぽくなるわけだね」
『やってみたい！』
「じゃあやってみましょう。文字列を表示させる方法は Version 7.12 
( No.132 ) 、 MFC 版は Version 7.14 ( No.134 ) を参照」
『やっぱデバイスコンテキストを使うわけね』
「ですが！」
『ですが？』
「ここから先は、ダイアログの時とは違う、ビューウィンドウ専用の処理方
法になります」
『ビュー専用？』
「そう。 Version 7.15 ( No.135 ) でやった再描画ってあるでしょ」
『画面が消えるとデバイスコンテキストに描いた内容も消えちゃうってゆー
のだよね』
「ビューにはその再描画を簡単にする仕組みがあるんです。こういうメンバ
関数があるでしょ」

void CSdiTestView::OnDraw(CDC* pDC)
{
    CSdiTestDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: この場所にネイティブ データ用の描画コードを追加します。
}

『お、いつの間に』
「これは最初から用意されてるメンバ関数。再描画されるときにこのメンバ
関数が呼ばれるから、その中で再描画するようにすればいいわけ」
『あ！　引数に CDC ってある！　もしかしてこれで描画できちゃうの？』
「そう、このデバイスコンテキストはビューウィンドウのだから、これに対
して描画すればいいわけ」
『いたれりつくせりねー。……あれ？　でもさ、再描画って OnPaint() 
ってメンバ関数でするんじゃなかったっけ』
「お、いいとこ突いてるかも。実はこの CSdiTestView::OnDraw() は 
CView::OnPaint() から呼ばれてるんです。試しに CSdiTestView::OnDraw() 
の中にブレークポイント置いて」
『ほい。ビルドして実行あっとすぐ止まっちゃった』
「再描画って言っても、最初に表示されるときにも」
『再描画なわけね。で？』
「ステップアウトのボタン……ツールバーの〈中カッコから出る〉ってアイ
コンのボタンを押して。それ押せば CSdiTestView::OnDraw() を呼んだ関数
に戻るから」
『ほいほい。お！』

void CView::OnPaint()
{
    // standard paint routine
    CPaintDC dc(this);
    OnPrepareDC(&dc);
    OnDraw(&dc);
}

『なるほどねー、まず CView::OnPaint() が呼ばれて、その中で 
CSdiTestView::OnDraw() が呼ばれてるわけね』
「つまり OnDraw() は何かのメッセージのハンドラじゃなくて、ビュークラ
スの〈再描画用メンバ関数〉ってこと。 OnPaint() だと BeginPaint() と
かが必要で面倒だから、それを CView::OnPaint() に隠してるんです」
『あ、そういえば BeginPaint() と EndPaint() がないよ？』
「この中で CPaintDC ってクラス使ってるでしょ。このクラスがそれを代わ
りにしてくれるんです」
『へーっ、便利ねー』
「ま、この辺は楽屋裏ってことで、実際に描画する部分を見てみようか。
描画は CSdiTestView::OnDraw() でするから、その中で文字列を描画させる
と……」

void CSdiTestView::OnDraw(CDC* pDC)
{
    CSdiTestDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);

    pDC->TextOut( 0, 0, "あいうえお" );
}

『うんうん、これは前やったのと同じ感じ』
「分かりやすいでしょ。こうやって、デバイスコンテキストさえ取得できれ
ば、相手を気にすることなく描画できるわけ」
『その辺は便利よねー。……でもさ、これってさっきのキー入力と全然関係
ないじゃない』
「もちろん。 Version 7.16 ( No.136 ) を読み返してもらえば分かるけ
ど、再描画を踏まえた描画の場合には」

１：入力ハンドラで、入力データをメンバ変数に取っておく。
２：InvalidateRect() で再描画を指示する。
３：OnDraw() が呼ばれるから、メンバ変数からデータを取ってくる。
４：それを描画する。

「っていうステップが必要になります」
『……よーするにめんどいわけね』
「そうでもないよ。まず、入力した文字をメンバ変数に取っておくところか
ら。 SdiTestView.h の方に」

class CSdiTestView : public CView
{
    // 描画する文字列。
    CString m_cMainTextStr;    // 追加。
// 以下略。

「って感じに追加して」
『文字列は CString に入れるわけね』
「そゆこと。ここで作った m_cMainTextStr は CSdiTestView のメンバ変数
だから、 CSdiTestView のどのメンバ関数からも使えます。というわけで 
CSdiTestView::OnChar() を次のように修正」

void CSdiTestView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
    // メンバ変数に入力した文字を追加。
    m_cMainTextStr += nChar;
    // 再描画を指示。
    InvalidateRect( NULL );

    CView::OnChar(nChar, nRepCnt, nFlags);
}

『 m_cMainTextStr に入力した文字を入れてく……ってのは分かるけど、 
+= なんかで入るの？』
「うん、そういう機能が CString に備わってるからね。で、追加したら再
描画を指示すると」
『 OnDraw() が呼ばれるわけね』
「そゆこと。で、そっちは」

void CSdiTestView::OnDraw(CDC* pDC)
{
    CSdiTestDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);

    // これまでに入力された文字列を出力。
    pDC->TextOut( 0, 0, m_cMainTextStr );
}

「さっき〈あいうえお〉だったのがメンバ変数のになっただけだから」
『ビルドして実行……おおっ！　打ったらすぐ出る！　なんか、なんかホン
トにエディタっぽい！！』
「結構簡単にこれくらいはできるってことだね」

/*
    Preview Next Story!
*/
『エディタっ、ちょっとカッコイイ！』
「まぁ、本格的なエディタには叶わないけどね」
『 VC のとか？』
「秀丸エディターとかもね」
『そのくらいできるようになるにはどのくらいかかる？』
「無理」
『へ？』
「というわけで次回」
＜ Version 9.16 文字列の横幅縦幅 ＞
『につづく！』
「いや、このレベルのエディタは普通には作れないから……」
『……そうよね、あたしは水希ちゃんを超えることはできないのよね』
「……むかつくけど言い返せない……」


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

