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

    KAB-studio.h


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

    送信日： 2002/09/16(Mon) No.174
    配信数： 3640 ( 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/


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

2002/09/08 (Sun)
　洗濯したり水炊き作ったり。午後は掃除。歌月十夜あと少し。ほとはー人
気高い？　テレビはだぁ！だぁ！だぁ！の再放送がいい感じ。

2002/09/09 (Mon)
　お仕事はプログラムの解析。プリンタのインクとかの消耗品って結構掛か
る。歌月十夜コンプリート。シエル先輩ｉｎメシアンのインパクトが……。
秋葉様もいい感じ〜。偶然の９月９日。

2002/09/10 (Tue)
　お仕事は昨日の続き。 DLL に WinMain() を入れるのって簡単にできるん
ですね。自炊生活。 Darling...Kiss Immediate はいい感じだー。ツッコミ
は本文の方に書いてね。

2002/09/11 (Wed)
　お仕事はドキュメント書き起こして修正へ。住基ネットの封筒来る。ラー
ゼフォン最終回いい感じ。そして行き先。

2002/09/12 (Thu)
　前やってた Java の仕事が急遽来て残業。 Java は楽しいねー。１週間の
短期決戦だけど。タマちゃん。

2002/09/13 (Fri)
　お仕事は引き続き Java の。やりたいことをやるＢ型。ＡｉｒＨ”の機種
交換に必要なもの。帰りたい時間。液晶モニター付きペンタブはそれほど便
利じゃなさそう……。３連休は仕事に潰れます。ふぅ。

2002/09/14 (Sat)
　午前中はのんびり。ほとはー描いてない。午後からお仕事。テレビはなん
かどれも……。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
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.13
ステータスバーを使ってみる！

「前回はツールバーを使ってみたから、今回はステータスバーを使ってみま
す」
『フツーの流れね』
「さて、 Version 9.09 ( No.170 ) の時と同じように Spy++ でステータス
バーを見てみて」
『ウィンドウクラス名を見れば素性がわかるってヤツね。んーと……あ
れ？　これって msctls_statusbar32 ってゆーのがひとつあるだけだね』
「うん、そう。小さい窓がいっぱいあるからツールバーみたいになってるよ
うに見えるけど、実はウィンドウひとつだけ」
『 msctls_statusbar32 ってウィンドウクラス名だと、 MFC のじゃな
い……のかな』
「そう、このステータスバーはウィンドウズが提供してくれるコントロール
だから」
『メッセージを使って操作もできるけど、 MFC のクラスもあるってこと
ね』
「そゆこと。じゃ、クラスの方を見ておこうか。ツールバーの時と同じよう
に、 MainFrame.h にある CMainFrame のメンバ変数として m_wndStatusBar 
ってメンバ変数が作られてます」
『 CStatusBar クラスの変数なんだね』
「ステータスバーが実際に作られてるのも、ツールバーと同じ 
CMainFrame::OnCreate() 。こんなふうに作られてます」

    if (!m_wndStatusBar.Create(this) ||
        !m_wndStatusBar.SetIndicators(indicators,
          sizeof(indicators)/sizeof(UINT)))
    {
        TRACE0("Failed to create status bar\n");
        return -1;      // 作成に失敗
    }

『またわかりにくい……』
「分かりやすく書くと、こんな感じかな？」

    if  ( 
            !m_wndStatusBar.Create(this) 
        ||
            !m_wndStatusBar.SetIndicators
                ( indicators
                , sizeof(indicators)/sizeof(UINT)
                )
        )
    {
        TRACE0("Failed to create status bar\n");
        return -1;      // 作成に失敗
    }

『微妙……』
「ま、 if の中でメンバ関数ふたつを呼んでるだけだけどね。まず 
m_wndStatusBar.Create() を呼んで、ここでステータスバーを作ってます」
『またよく分かんない this が出てきた……』
「これはまぁまた今度って事で」
『 if の感じがツールバーの時と同じだから、これもショートサーキット
使ってる？』
「使ってます。この Create() が失敗したらその時点で if の中に入って、
成功したら次の m_wndStatusBar.SetIndicators() が呼ばれます」
『こっちは何してるの？』
「これはね、 MainFrame.cpp の上の方に」

static UINT indicators[] =
{
    ID_SEPARATOR,           // ステータス ライン インジケータ
    ID_INDICATOR_KANA,
    ID_INDICATOR_CAPS,
    ID_INDICATOR_NUM,
    ID_INDICATOR_SCRL,
};

「ってあるでしょ。ステータスバー見てもらうと分かるけど、欄が５つある
でしょ」
『それがこれ？』
「そういうこと。実際に CapsLock とか押すと」
『あ！　ステータスバーに表示される！』
「今、 CapsLock のは右からみっつめの欄に表示されたでしょ。これを」

static UINT indicators[] =
{
    ID_SEPARATOR,           // ステータス ライン インジケータ
    ID_INDICATOR_KANA,
    ID_INDICATOR_NUM,
    ID_INDICATOR_SCRL,
    ID_INDICATOR_CAPS
};

『あ、 ID_INDICATOR_CAPS が最後に来た』
「こうすれば」
『 CapsLock のが右端に！』
「それに、この数をこんなふうに減らせば」

static UINT indicators[] =
{
    ID_SEPARATOR,           // ステータス ライン インジケータ
};

『あ、欄がなくなった！』
「これでメニューとかのプロンプトだけが表示されるようになります」
『こっちの方がシンプルでいいかもね。それにしても……なんかこの辺さ
らっとやってるけど、結構難しくない？』
「うん、配列の部分とか、教えてないのがあるからね……その辺は来週に持
ち越しってことで。で、話を戻すと、この機能は MFC のだから」
『 MFC のなんだー』
「っていうか、こんなキー表示をしても意味ない気もするんだけどね」
『確かに……』
「ま、実際、この機能もそうだし、ステータスバーの一番左の欄はメニュー
とかのプロンプトが自動的に出力されるだけだから」
『ステータスバーってリソースもないし、もしかしてすることない？』
「ま、基本的にはね。でも、操作することはできるよ？　ツールバーの時み
たいに」
『あー、コントロール取得して……って、ステータスバーはそういうふうに
包まれてなかったから違うか』
「ところがどっこい、実はその辺の仕組みはツールバーの時と同じなんで
す。実際にコード見た方が早いかな」

void CMainFrame::OnMenuTest() 
{
    // ステータスバーコントロールを取得します。
    CStatusBarCtrl &rcStatusBarCtrl
        = m_wndStatusBar.GetStatusBarCtrl();
    // テキストをセット。
    rcStatusBarCtrl.SetText
        ( "ステータスバーですよ？"
        , 0
        , SBT_NOBORDERS
        );
}

『いつものテスト用のメンバ関数ね』
「まず最初の」

    CStatusBarCtrl &rcStatusBarCtrl
        = m_wndStatusBar.GetStatusBarCtrl();

『これはまさにツールバーの時と同じね』
「そう、詳しくは Version 9.12 ( No.173 ) つまり前回を見てもらえば分
かると思うけど、 CStatusBar からは直接ステータスバーを操作できなく
て」
『中に操作するための CStatusBarCtrl クラスのメンバ変数をスレイブとし
て飼ってるわけね』
「……嫌とか言ってた割りには……」
『まーそれは置いといて、この rcStatusBarCtrl って参照を使えばステー
タスバーを操作できるわけね』
「それが」

    rcStatusBarCtrl.SetText
        ( "ステータスバーですよ？"
        , 0
        , SBT_NOBORDERS
        );

「の部分。まず第１引数が出力する文字列」
『あ、試しとこうっと。ビルドして実行、この前のツールバーを押して……
うん、〈ステータスバーですよ？〉って左端の欄に出た！』
「第２引数の 0 は、出力する欄。 0 だから左端に出たけど」
『ってことは 1 にすれば左から２番目のに出るのね。ビルドして実行、
お、出た。スペース狭くて１文字くらいしか見えないけど……』
「最後の SBT_NOBORDERS は、表示するスタイル。 SBT_NOBORDERS だと縁の
ない形式で表示されて、 0 を渡すと縁のある状態で表示されます」
『あれ？　でも、左から２番目って元々縁あるけど、縁消えないよ？』
「……そうだね。なんでだろう……一応」

    rcStatusBarCtrl.SetText
        ( "ステータスバーですよ？"
        , 0
        , 0
        );

「って感じに左端で 0 を渡せば」
『お、これはちゃんと縁有りになるんだね』
「ま、そーゆーことで」
『テキトー……』
「で、こういうふうにステータスバーに文字列を表示することはできるけ
ど、基本的には MFC の機能を使った方が楽かな」
『そりゃそうよねー、メニューとかのプロンプトを設定すればそれがそのま
ま表示されるんだから』
「有効化／無効化の話もそうだけど、 SDI アプリになるととたんに面倒な
ことが増えてくるから、どうしても MFC 使った方が楽になるんだよね」
『使ってもいいんじゃないの？』
「うん、まぁそうなんだけど、初めはどこまでがウィンドウズのコントロー
ルでどこからが MFC かって判りにくいでしょ」
『うん、今回のも……結局は、 Ctrl って付いてるクラス名のは、直接コン
トロールを操作する、ってことでいいんだよね』
「そゆこと。そういうクラスはメッセージをコントロールに送る、それくら
いの機能しかないからね」
『で、 Ctrl が付いてないクラスの方で色々管理すると』
「その辺が MFC の役立ってるところかな」
『で、直接操作するときには Get なんたら Ctrl() ってメンバ関数呼べば
参照が返ってくるからそれを操作すればいい、と』
「その辺は MFC の中では比較的統一されてるから、難しくないと思うよ」
『ま、なんとなくはわかるかなー』
「なんとなく？」
『なんとなく』

/*
    Preview Next Story!
*/
『何となくでいーのかなー』
「いいと思うよ」
『そなの？』
「難しく考えてたら、プログラムいっぱい書けないでしょ」
『それはそうだけどね』
「もちろん細かい部分は押さえつつ、って前提はあるけど」
『やっぱそうなのね……』
「というわけで次回」
＜ Version 9.14 配列を読み解く ＞
『につづく！』
「次回はそういう細かい所」
『それが何となく分かればいい？』
「そういうこと」


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

・ほとはー追加予定……
　三人合体ホットハーブに３の３を追加予定。あくまで予定。３の２の時は
ホントにギリギリだった……。
[ 三人合体ホットハーブ ]
http://www.kab-studio.com/Comic/HotHerb/


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
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
*/
////////////////////////////////////////////////////////////////////

