
/*
    KAB-studio.h
        　ＫＡＢ−ｓｔｕｄｉｏで先週更新した内容
        が格納されたヘッダーファイルです（笑）。

    (C)KAB-studio ALL RIGHTS RESERVED.
        http://www2.justnet.ne.jp/~kabstudio/
        kab-studio@multimedia.design.co.jp

    送信日： 1999/08/09(Mon) No.019
    配信数： 2590（ Mag2 + Pubzine ）
＊    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/

//  来週はお休みぴょん。

　このメールマガジンは「まぐまぐ」と「Pubzine」を通して配信されてま
すが、「まぐまぐ」の方が１４日(土)から１８日(水)まで停止するんで、来
週の月曜には配信できなくなります。
　これ幸い、もとい、非常に申し訳ありませんが、次回の配信は２週間後の
８月２３日（月）とさせて頂きます。これは「まぐまぐ」と「Pubzine」両
方ともです。
　このメールマガジンが、来週、８月１６日（月）には、発行されないとい
うわけです。御了承ください。

　ちなみに「Pubzine」のお休みは配信日と全然重ならないんで大丈夫（爆）。


/*            １９９９年８月９日（月）の更新                */

・日記の過去ログを一時削除。
　ホームページの容量がギリギリなんで、チョー普通な日記の去年以前の分
を一時削除します。
　この日記はＫＡＢ−ｓｔｕｄｉｏの過去ログ的な面もあるのでホントは削
除したくないんですが……これだけで２．４Ｍもあるんです（爆）。まーほ
とんど読まれてないみたいだし、これだけでこんなに余裕できるんなら……。
　ちなみに今週は特に更新ナシ（爆）。これは更新準備ってことでね。



/*                チョー普通な日記                */

１９９９年８月１日（日）：
　体痛くても３ＤＣＧやホームページの更新とか、僕頑張る！　だって西武
が好調なんだもん！＜オチなし。

１９９９年８月２日（月）：
　祝・９万ヒット達成！　１０万ヒットまで

１９９９年８月３日（火）：
　哲学堂とゆーとこに行って疲れたっすー。その癒しにヒット数ベスト５な
ど。

１９９９年８月４日（水）：
　２日続けてのお出かけで疲れたって感じ。む〜。

１９９９年８月５日（木）：
　夢あります？　僕にはありません（爆）。人生そのものが夢なのかも。

１９９９年８月６日（金）：
　ガンダム見たりＤＭ来たりのいつもと違う日常。たぶん。

１９９９年８月７日（土）：
　よく「感想を４００字詰め原稿用紙に書け」とかあるけど、「４００字詰
め原稿用紙」の感想を書くヤツはいない。今までは。



/*                    金菜さんの憂鬱                        */

１９９９年８月１日（日）：
STL について
「配列をみっつ受け取るもの」と「値しか受け取らないもの」
どんな配列でも渡せるのか
組込型（ int や double など）や CString は使える
サンプルコード
お便り
「Alt+Xを押す」というメッセージを送るには？
WM_SYSKEYDOWN や WM_SYSCHAR ダイアログは WM_COMMAND ？
keybd_event() の方がいいかも
お便り
BitBlt() の転送方法
BGRとRGB
SGI 版 STL

１９９９年８月２日（月）：
ＳＴＬについて
CString の配列を渡したときの std::find() 
サンプルコード
*p_pFirst == p_rValue が可能だから
== 演算子がオーバーライドされている
どんな演算子が使われてるか見なきゃいけない
何が行われているか分かれば、配列を問わない

１９９９年８月３日（火）：
ＳＴＬについて
文字列の配列は渡せない
サンプルコード
文字列の比較じゃなくポインタが比較されるだけ
組込型だから == のオーバーロード関数を作ることはできない
解決するには関数オブジェクトを使う

１９９９年８月４日（水）：
ＳＴＬについて
関数オブジェクトの例
サンプルコード
関数オブジェクトが何なのかをまとめると、
( ) 演算子のオーバーロード関数を持つクラスが関数オブジェクト
サンプルコード
この関数オブジェクトと std::find_if() の使用例

１９９９年８月５日（木）：
ＳＴＬについて
std::find_if() 
サンプルコード
テンプレート引数が決まると……
サンプルコード
operator()
int i; 
i( 100 );
お便り
シェルエクステンション
デスクトップの新規ごみ箱が機能しない

１９９９年８月６日（金）：
ＳＴＬについて
std::find() と std::find_if() の違い
サンプルコード
== が関数オブジェクトに置き換わっただけ
== が使えなかったら std::find_if() を使えばいい

１９９９年８月７日（土）：
ＳＴＬについて
アルゴリズムはポインタの操作と == か < による比較しかしない
比較演算子をオーバーロードするか関数オブジェクトを作成するか
std::equal() の関数オブジェクトを使わないもの
サンプルコード
std::equal() の関数オブジェクトを使うもの
サンプルコード
テンポラリ変数
アルゴリズムのまとめ


/*                    #pragma twice                        */


　Version 2.8
もしももしもがあったなら

「while の仲間は全部で６つくらいあるんだけど、今回はそのひとつを紹介
します。その名は if 」
『いふ、訳すと〈もしも〉、うわタイトルそのまんま！』
「そ。まず使ってみようか」

void CCalcDlg::OnBEqual() 
{
    if( 1 )
    {
        TRACE( "いちです\n" );
    }
    else
    {
        TRACE( "それいがいです\n" );
    }
}

『あ、while に似てるね。でもその次の else ってよく分かんない』
「とりあえず試してみれば？」
『はーい。ビルドして実行、と。あれ？』

いちです

『だって。次の表示されないね』
「じゃ、今度はこれ試してみて」

void CCalcDlg::OnBEqual() 
{
    if( 0 )
    {
        TRACE( "ぜろです\n" );
    }
    else
    {
        TRACE( "それいがいです\n" );
    }
}

『ビルドして実行。あ、今度は』

それいがいです

『だって。ってことはやっぱ、 while みたいに〈ゼロかそれ以外か〉って
こと？』
「そういうこと。まず if は、ゼロ以外だとすぐ下の中カッコの中を実行し
ます。実行したあとは、その下の else とそれにくっついた中カッコを飛び
越します」
『だから最初の例だと〈それいがいです〉が表示されないんだ』
「そういうこと。無視されちゃうんだよね。で if がゼロだと、if にくっ
ついた中カッコを飛び越して、次の else に行きます」
『だからふたつめの例は〈ぜろです〉がでなかったと。で、 else って？』
「else は〈そのほか〉って意味で、 else に出遭あっちゃったら必ず中
カッコの中を実行します」
『〈えるす〉って、サムエルのエル？』
「うんまあ、そうだけど……ま、そんなわけで〈それいがいです〉が表示さ
れるわけだね」
『〈出遭う〉って、いまいちよく分かんないかなー』
「実は、こんなふうにさらに if を足せるんだよ」

void CCalcDlg::OnBEqual() 
{
    if( 0 )
    {
        TRACE( "ぜろです\n" );
    }
    else if( 1 )
    {
        TRACE( "いちです\n" );
    }
    else
    {
        TRACE( "それいがいです\n" );
    }
}

『 else if がそう？』
「そう。とりあえず」
『ビルドしてじっこー』

いちです

『ん？　なんか予想と違うかも……』
「じゃ、解説。まず最初の if はゼロ」
『だから最初の中カッコは無視ね』
「で、次の else if は１」
『だから実行。そしたらあとは無視、なんだっけ』
「そう。ひとつでも中カッコを実行したら残りの else if と else は無視
されます。これ試してみれば分かるかな？」

void CCalcDlg::OnBEqual() 
{
    if( 1 )
    {
        TRACE( "いちです（１）\n" );
    }
    else if( 1 )
    {
        TRACE( "いちです（２）\n" );
    }
    else
    {
        TRACE( "それいがいです\n" );
    }
}

『ビルドして実行、と』

いちです（１）

『あ、つまり中カッコの中をひとつでも実行しちゃったら、そのあとの else 
if( 1 ) も無視されちゃうわけねー』
「そういうことだね」
『質問！』
「はい、火美ちゃん」
『 if と else if ってどう違うの？』
「 if のあとに if を加えるときには、この else if を使わなきゃダメ、
ってこと」
『なんで？』
「これ試してみれば？」

void CCalcDlg::OnBEqual() 
{
    if( 1 )
    {
        TRACE( "いちです（１）\n" );
    }
    if( 1 )
    {
        TRACE( "いちです（２）\n" );
    }
    else
    {
        TRACE( "それいがいです\n" );
    }
}

『びるじー』

いちです（１）
いちです（２）

『あ、両方実行されちゃった』
「つまり、 if は〈if と else if と else のグループがここから始まりま
すよ〉っていうことを言ってるわけ」
『if から始まる、ってことなのね。もひとつ質問！　こーゆーのって、こ
う書いてもいいんだよね』

void CCalcDlg::OnBEqual() 
{
    if( 1 )
        TRACE( "いちです（１）\n" );
    else if( 1 )
        TRACE( "いちです（２）\n" );
    else
        TRACE( "それいがいです\n" );
}

「そうだよ。前回言ったのだよね」
『水希ちゃんがそうしない理由は？』
「そうだねー、たとえば、 else だけ２行に増えたりして……」

void CCalcDlg::OnBEqual() 
{
    if( 1 )
        TRACE( "いちです\n" );
    else
    {
        TRACE( "それいがいです\n" );
        TRACE( "たぶん\n" );
    }
}

「みたいなのはちょっと汚いかな、と」
『汚いって、それが基準なの？』
「えっと……あと、行間が空いてないと分かりにくいっていうか……」
『他には？』
「あと、インデントし忘れると分かりにくいとか」
『でも if の次とか分かるんだからいいんじゃない？』
「う”」
『なによ、この前はあんな威張り腐ったこと言ってたのにさー、プロのプロ
グラマーって言ってもこんなもんよね』
「あう〜、いじめられてる〜」
『こんなときじゃないといじめらんないもん』
「で、火美ちゃんはどう思う？」
『げ！　え、えっと……』
「ま、どっちでもあんま変わんないってことだね」
『なによそれー、そんなテキトーでいーの？』
「ものによるってこと。〈安全度を高めること〉の中にも、絶対しなきゃダ
メなものから、ま、どうでもいいや、ってレベルのものまであるってこと」
『で、これはどーでもいーレベル、ってことね』
「ってゆーか、見やすさって人それぞれだから、自分にとって一番分かりや
すい方法を取るのがいいってことだね」
『でも人に見せることだってあるんでしょ？』
「ある程度の人なら、自分の見やすい体裁に書き換えるプログラムくらい、
簡単に作れるから」
『あ、プログラムってそういうこともできるんだ』
「もちろん。でも前回の〈１行に詰め込む〉っていうのは慣れててもミスす
ることあるから」
『これは少し危険度が高いってことなのねー』
「もうひとつこういうの紹介しておこうか」

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100;
    TRACE( "%d\n", iBox );
}

「は、」

void CCalcDlg::OnBEqual() 
{
    int iBox = 100;
    TRACE( "%d\n", iBox );
}

「でも同じだったりします」
『つまり、変数を作って、そこに数字を入れてるってことね』
「そういうこと。でもホントはちょっとちがうんだけどね」
『なにが？』
「ま、それはもすこし先に見ればいいや。とりあえず今は同じって考えてお
いて」
『は〜い。でさ、これってどのくらいの危険度？』
「これは、一緒にした方が安全度高いんじゃないかな」
『なんで？』
「なぜだと思う？」
『うーん……前(Ver 2.3)に〈使う前には必ずなんか数字を入れとかなきゃ
いけない〉って言ってたでしょ。こんなふうに一緒に書いておけば、数字入
れとくの忘れたりしないとか』
「うん、そういうことだね。作ったばかりの変数にはテキトーな数字が入っ
てるから、それをクリアするの忘れないためにね。結構分かってきたじゃな
い」
『そう？　アリガト！』
「ちなみに僕は、こういう書き方が好きかな

void CCalcDlg::OnBEqual() 
{
    int iBox
         = 100;
    TRACE( "%d\n", iBox );
}

『なんか変。なんで？』
「いろんな値試すときに便利だから」

void CCalcDlg::OnBEqual() 
{
    int iBox
//         = 100;
         = 200;
//         = 300;

    TRACE( "%d\n", iBox );
}

『あ、なるほど』
「あと書き忘れたけど、 if のチェックには変数や演算子が使えるから」
『while と同じってことね』
「そういうこと」



/*
    Preview Next Story!
*/
『while に if 、次は？』
「次はいっぺんに３つ！」
『げげ！　いきなりそんな憶えきれないよ〜』
「大丈夫だよ、似てるのばっかだから」
『というわけで次回』
＜ Version 2.9 縦横無尽！ ＞
「につづく！！」
『でも忘れちゃいそ』
「そのときは読み返せばいいんだから」
『というわけで最近読み始めた人はバックナンバーを見てね！』
「そーいえば火美ちゃん、記憶は？」
『思い出すの忘れてた』




/*            １９９９年８月１６日（月）の更新予定                */

・未定（爆）。
　考えてることはいっぱいあるのに、なぜか形にならない……。ゴメンです。
まーお盆休みとかに入ると思うんで皆さん見に来れないでしょう。こっちも
お休みってことで。


/*            １９９９年８月２３日（月）の更新予定                */

・知らん（爆）。
　なんか更新されてるといいですね。


/*                        感想大募集！！                        */

　KAB-studio.h のご意見ご希望ご感想を大募集！！
　このページの送信フォームから送ってね。

http://www2.justnet.ne.jp/~kabstudio/Info/MailMagazine/Impression/

　お待ちしとるっす！


/*                        ご注意！！                        */

・このメールは絶対に返信しないでください。
・感想は下のページから送ってください。
http://www2.justnet.ne.jp/~kabstudio/Info/MailMagazine/Impression/
・購読登録を解除したいときには下のページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーは下のページにあります。
http://jazz.tegami.com/backnumber/frame.cgi?id=0000012198

/*
    KAB-studio.h
    Weekly Mail Magazine.
    Written by Kaburaya Seiden.

    (C)KAB-studio ALL RIGHTS RESERVED.
        http://www2.justnet.ne.jp/~kabstudio/
        kab-studio@multimedia.design.co.jp
*/


/*                    See you next week!!                    */


