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

    KAB-studio.h


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

    送信日： 2002/04/15(Mon) No.153
    配信数： 3770 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

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

・Java メルマガが１号増えました
　Java で納得オブジェクト指向プログラミングが１号増えて、全１８号に
なりました。最終回は５月１５日配信分となります。
　これは、廃刊を月途中には行えないという規則があるためです。その他、
廃刊後のバックナンバーの販売方法等、まだ分からない部分もあるので、こ
ちらの方は分かり次第ホームページの方を更新していきたいと思います。
[ Java で納得オブジェクト指向プログラミング ]
http://www.kab-studio.com/Programing/JavaOOP/


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

2002/04/07 (Sun)
　 Java メルマガ廃刊の準備。ちょっと面倒？　爆笑オンエアバトル決勝戦
は、なんか？　そして陣内智則では？

2002/04/08 (Mon)
　派遣先の引っ越しの片付け。午後はプログラミング。テストファーストっ
つーかオブジェクト指向って向いてる人と向いてない人がいるような。帰り
に紙購入。ＣＤ収納＆郵送ケースがちょっと感慨深いかも。そしてぷらとわ
がとっかかり。うれしいです〜。

2002/04/09 (Tue)
　会社では眠かった。帰りにパスポート受け取り。プロジェクトＸで昔のコ
ンピューター。 MSX ってマイナー？　そして電源要らずの小型ハブ。こう
いうのがいいんですよー。でもやや不安定そう？

2002/04/10 (Wed)
　なんか微妙にリズム狂う。疲れてるし。 Graphviz が見つからない〜。ぱ
ぱっとイラスト。あずまんが大王、いいわ〜。っつーか榊さんいいわ〜。そ
して先を越された。

2002/04/11 (Thu)
　プログラミングはライブラリがかなりしっかりと。 CppUnit の全自動は
いい感じ。ぱぱっとイラスト。ビデオデッキの調子がまだ悪い〜。

2002/04/12 (Fri)
　プログラムはもうすぐ完成。テストをしっかりやってるから信頼性十分。
テレビはクレヨンしんちゃん。こういうのってちゃんと憶えてるものかなー
と。そして Graphviz バイナリ。 doxygen + dot でドキュメントは完璧。

2002/04/13 (Sat)
　MSDN 来る。 USB ってなんでプリインストール版でないといけないんだろ
う。謎の笑えるニュース。ウイイレ５。テレビはミルモでポン！が一番いい
ような。ウイイレ５して爆笑オンエアバトルを見逃す……。そして USB メ
モリ。そして TCB 。ビデオデッキ復活！


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

■　第三章　きもち　−１６−

「い、いや、ごめん！　こんな時に何言ってるんだろうね、忘れちゃって、
い、いいよ」
　舞は呆気にとられて、顔を背ける俊雄を見上げていた。
「付き合うって、木村君……うん、そういうことなら、い」
「そうだよね、だいたい、舞さんは、朴さんのことが好きなんだもの
ね……」
「え？」
　聞き捨てならない言葉に舞は気づいた。
「それ、どういう意味？」
「え？　どういう意味って……」
「ははははは、そんなわけないじゃない！　あたしがあんなバカと……」
　腹を抱えるほどに笑い出しても、俊雄は信じなかった。
「いいよ、気休めなんて……」
「気休めなんかじゃないって」
「少なくとも、僕にはそう見えた。みんなも、そう言ってた」
「……みんな？　恭子達？」
　俊雄はこくんとうなずいた。舞は、その言葉の意味を捉えようと、頭の中
で、何度となく繰り返し言ってみた。私が、雅樹のことを、好き……私
が……。
「わ、私……」
　顔を上げて光を受けると、その顔は紅潮していた。頭はパニック、何も考
えられない表情だった。
「もしかして、本当に朴さんのこと、想ってなかったんじゃ……」
　俊雄の表情は、そのひらめきに喜びさえ感じていた。
「私……そう、私……」
　舞が俊雄の方を再び向いた瞬間、その表情を見て、俊雄は嫌な予感がし
た。
「私、雅樹のことが好きだったんだ！」
　そのことに今この瞬間気づいた舞は、喜びさえ感じていた。
「え、いや、その、そう見えたってだけで……」
「ううん、そう、なんだかなー、なんであたしこんなことに気づかなかった
んだろう。そうかー、私、雅樹のこと――」
　またもや頭がめぐるましく回転して、相変わらず顔は真っ赤だったが、そ
れでも顔は喜んでいた。
「あの……」
「木村君ごめん！　ちょっと行くとこあるから。じゃ！」
　そう言って走り去っていく舞の背中を見ながら、予感を的中させてしまっ
た自分を呪って、つぶやいた。
「やぶへび……」
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『次の水曜は Java メルマガの日！』
「４月１７日は〈第１６回  インターフェイスと実装を分ける〉です」
『まーよく分かんないのは相変わらずだから、質問！』
「はい火美ちゃん」
『今って購読登録数いくつぐらい？』
「２４。テスト用にうちでも取ってるから２３人かな。でも」
『でも？』
「購読登録数に比べて売上が結構多いから」
『バックナンバーが売れてるってこと？』
「たぶん。一応廃刊後もバックナンバーは売るつもりだから」
『そっちの売上も見込めるってことね。廃刊後もよろしく！』
「まだ３号残ってるけどね……」
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 8.11
ツリービューコントロールを作ろう！

「前回の最後に」

WM_ ： 普通のメッセージ。ウィンドウプロシージャで受ける
*M_ ： コントロールに送って操作する。 EM_ とか
*N_ ： 通知メッセージ。コントロールから WM_COMMAND と一緒に来る

「って説明しました」
『で、なんか最後のが違うって言ってたよね』
「言いました。これは、通知メッセージは WM_COMMAND と一緒に送られてく
るものだけじゃなくて、 WM_NOTIFY ってメッセージと一緒に送られてくる
ものもあるから」
『 WM_NOTIFY の notify って〈通知〉って意味だよね。こっちの方がむし
ろ通知メッセージっぽいね』
「この WM_COMMAND が送られてくるか WM_NOTIFY が送られてくるかってい
うのは、コントロールの種類によって決まります」
『エディットボックスは WM_COMMAND だったね』
「そう、ほとんどのコントロールは WM_COMMAND で送られてきます。 
WM_NOTIFY が送られてくるのはツリービューコントロールやリストビューコ
ントロールとかの、比較的新しいコントロールだけ」
『新しい？』
「まー、ウィンドウズ９５からって意味での新しいってこと」
『ウィンドウズ３．１の頃はなかった？』
「たぶん……で！」
『で？』
「その WM_NOTIFY を使うためにはツリービューコントロールとかを使わな
きゃいけない」
『つまりこれからツリービューコントロールを作るわけね』
「そうなるんだけど……普通にそれをやると大変だから、まず MFC で使っ
てみることにします」
『 MFC ？　今のプロジェクトで MFC 使えるの？』
「使えないから、新しくプロジェクト作ります」
『げ』
「というわけで、今の SimpleDialog を閉じて、新しく MFC プロジェクト
を作って」
『ほいほい。【MFC AppWizard (exe)】で普通にダイアログのを作ればいい
んだよね』
「そうそう。プロジェクト名は MfcDialog にでもしといて」
『ほいほい』
「作ったら、そこにツリービューコントロールを貼り付けて」
『ツリービューコントロールって、横向きの手の指みたいなのだよね』
「手の指……そうそれ」
『貼り付けたよ』
「次にそのツリービューコントロールの ID を IDC_TREE_MAIN に」
『ほい』
「さらに、プロパティの【スタイル】ページで【ボタンあり】と
【線を表示】と【最上位にも線を表示】をオンにして」
『これがないと、エクスプローラーとかみたくなんないんだね』
「そうなんだよね、最初からそういうスタイルになってないから、これをし
ないとツリービューコントロールっぽくならないから忘れずに。じゃ、とり
あえずビルドして実行してみて」
『ほい。んー、でもツリービューコントロールに何も表示されないね』
「そう、そこは自分で追加しなきゃいけないんです。プログラム書いてね」
『あらま、それは面倒』
「うん、結構面倒かも」
『げ……』
「まず、クラスウィザードを表示して」
『あ、操作するのにメンバ変数作るんだね』
「その通り。 Version 5.31 ( No.096 ) とかでやったね」
『同じようにすればいいんだよね』
「そう。【メンバ変数】ページで IDC_TREE_MAIN を選択して
【変数の追加】を押して」
『ほい。あれ、【カテゴリ】が最初から〈コントロール〉になってる』
「ツリービューコントロールとかは複雑だから、普通の変数に置き換えられ
ないんです」
『だから変数版のメンバ変数は作れないわけね。メンバ変数は m_cMainTree 
でいい？』
「うんそれで。このメンバ変数を使って、ツリービューコントロールに項目
を追加してみます。追加するのはおなじみの OnInitDialog() に」

BOOL CMfcDialogDlg::OnInitDialog()
{
// 略。
    // TODO: 特別な初期化を行う時はこの場所に追加してください。
    m_cMainTree.InsertItem( "１番目のアイテム" );// この１行を追加。

    return TRUE;
}

『ん、追加するのって１行だけでいいの？』
「とりあえず」
『じゃーとりあえずビルドして実行。おお、ツリービューコントロールに
〈１番目のアイテム〉が追加された！』
「この CTreeCtrl::InsertItem() で項目……アイテムっていうのもあれだ
から【アイテム】って呼ぶね」
『ほいアイテム。ゲームなんかのアイテムと同じ？』
「そう同じ。このアイテムの追加を CTreeCtrl::InsertItem() でします」
『んーと、これを』

    m_cMainTree.InsertItem( "１番目のアイテム" );
    m_cMainTree.InsertItem( "２番目のアイテム" );

『ってやると……あー、どんどん増えてくけど、ツリーになんないね。１番
目のアイテムの……子アイテムってどうやって入れるの？』
「それには CTreeCtrl::InsertItem() の隠された引数を使います」
『隠された引数？』
「 CTreeCtrl::InsertItem() のリファレンスを見てみて」
『ほい。あれれ？　メンバ関数がいっぱいある』
「関数は引数が違うものをいっぱい作れるから。これを【オーバーロード】
って言います」
『オーバーロードって前にやったね』
「 Version 7.09 ( No.129 ) でやった【演算子のオーバーロード】と同
じ。あれは演算子だったけど、こっちは普通の関数」
『？？？』
「んー、演算子のオーバーロードの方は難しいかも……うん、〈同じ〉発言
は撤回」
『なんですと？』
「とりあえずは、普通のオーバーロードと、演算子のオーバーロードは別に
憶えた方がいいかも」
『別に？』

普通のオーバーロード：同じ名前の関数を、引数の変えて色々作ること
演算子のオーバーロード：クラスに演算子を使えるように関数を作ること

「って憶えた方が今は楽かもね」
『うん、この方が分かりやすい……けど、ホントは同じなの？』
「そう、 C++ では演算子も関数の一種、って見方が強いからね」
『演算子も関数の一種、ねぇ……』
「というわけで話を戻して」
『 CTreeCtrl::InsertItem() にはオーバーロードしてて、関数が４つある
ね。あれ？　でもさ、今呼んでる、引数ひとつのってないよ？』
「そこでもうひとつ使うのが、引数の省略。 Version 5.13 ( No.078 ) で
教えたように」
『そっか、引数に = で値入れとくと、それは省略できるんだ。それだと、
省略して引数ひとつだけにできるのは』

HTREEITEM InsertItem
    ( LPCTSTR lpszItem
    , HTREEITEM hParent = TVI_ROOT
    , HTREEITEM hInsertAfter = TVI_LAST 
    );

『だけだからこれだね』
「そう、このメンバ関数が呼ばれてます」
『質問！　これってどうやって選ぶの？　似たような引数のがあったら？』
「これ、自分で〈どのメンバ関数を選ぶ〉っていうのは決められません。関
数に渡した引数の型と数を見て自動的に決められます」
『決められなかったら？　引数が似てたりして、たとえば』

void Test( int p_i );
void Test( int p_i, int p_i2 = 0 );

『で、引数ひとつしか渡さないとか』
「そしたらコンパイルエラーになります。逆に言うと、オーバーロードした
り引数の省略をしたりするときは、似たような引数にならないように作らな
きゃいけないってこと」
『あー、ってことはあたしの例だと、 Test() って関数を作るときに注意し
なきゃいけないのね』
「そゆこと。作っても呼べないからどっちか削ることになるし、この例な
ら」

void Test( int p_i );

「はいらないでしょ」
『そっか、引数省略したらこれと同じになるから』
「もしくは引数の省略をやめるか」
『それって』

void Test( int p_i );
void Test( int p_i, int p_i2 );

『ってことね。でもさっきの方が、関数ひとつだけでいいからいいんじゃな
い？』
「その辺は議論の的だったり……場合によって使い分けが必要だから」
『場合？』
「たとえば、引数を省略したときとしないときとで、呼ばれる関数を変えた
いときとか」
『そっか、引数省略の方だと、関数ひとつだから困るってこともあるんだ』
「その辺は、火美ちゃんがオーバーロード関数を作る時になったらの話だ
ね」
『おお』
「さて話を戻して、さっきの CTreeCtrl::InsertItem() 、省略してた第２
引数に〈これから追加するアイテムの親〉を渡すと、その親の子アイテムと
して追加することができます」

BOOL CMfcDialogDlg::OnInitDialog()
{
// 略。
    // TODO: 特別な初期化を行う時はこの場所に追加してください。
    HTREEITEM hParentItem
        = m_cMainTree.InsertItem( "１番目のアイテム" );
    m_cMainTree.InsertItem( "２番目のアイテム", hParentItem );

    return TRUE;
}

『 HTREEITEM ってので、さっきのメンバ関数の戻り値受け取ってるね』
「これは頭に H が付いてるとおり」
『ハンドル！』
「なんです。ツリービューコントロールのアイテムを操作するためのハンド
ルで」
『これを第２引数に渡すと、これが親になるから〈２番目のアイテム〉が
〈１番目のアイテム〉の子アイテムになるわけねー』
「ちなみに第２引数を省略すると TVI_ROOT っていうのが渡されます」
『これを渡すと追加したアイテムが親になるわけね』
「ちなみに【ルート】は【根っこ】って意味」
『木の根っこだから親ってわけねー』

/*
    Preview Next Story!
*/
『アイテムの追加とか、簡単だね』
「 MFC だからねー」
『またかい！　だったら MFC だけでいーじゃん』
「それだとできることが限られちゃうからね」
『できることねー』
「火美ちゃんはどんなアプリ作りたいの？」
『へ？　あたし、そーゆーのないよ』
「ないって……」
『というわけで次回』
＜ Version 8.12 ツリーアイテム ＞
「につづく！」
『だって水希ちゃんが教えてくれるから勉強してるだけでー』
「それでいいの？」
『いーの』


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

