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

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

    送信日： 1999/06/14(Mon) No.011
    配信数： 2150（ Mag2 + Pubzine ）
    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/

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

・メニューバーが変わりました！
　これまでは不格好なボタンとドロップダウンリストで構成されていたメ
ニューバー（上のフレームのこと）が新しく生まれ変わりました！
　今回のものは左端の三角形をクリックすることでメニューを変えられま
す。見たいページが出てきたらそのタイトルをクリックしてください。細か
い使い方や、使えない方用のサイトマップへのリンクは右端の「？」な火美
ちゃんのアイコンをクリックしてください。
　とりあえず２週間〜１ヶ月ほどテストする予定です。それほど問題ないよ
うなら他のページを直接開いたときにもこのメニューバーが表示されるよう
にします。「問題アリ！」という方はメール、チョー普通な日記、金菜さん
の憂鬱にてどんどん物申してください。



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

１９９９年６月６日（日）：
　毎月恒例、６月表紙はいかにして完成したのか！？　と、８万ヒットとか
テレビとか歌とか。

１９９９年６月７日（月）：
　ゲームしたりアニメ見たりイラスト描いたり、とゆー普通の１日。

１９９９年６月８日（火）：
　ここ最近の平日の記事には必ずスト３３ｒｄが出て来ますんでゲームしな
い人にはつまらないかも。この日もそんな日記。

１９９９年６月９日（水）：
　DHTML を使った機能性を保ちつつクールなメニューバーが登場！！　そし
て彼は心の叫びを……。

１９９９年６月１０日（木）：
　さらにメニューバーにアイコンを付けたり。あとミトとか。

１９９９年６月１１日（金）：
　聖飢魔ＩＩのＣＤ購入！　んで、やっぱ毎週金曜はアニメの日。あとイラ
ストとか新ようこそページとか。

１９９９年６月１２日（土）：
　ぷらとわとイラストとさくらとサッカーだけの平凡な１日。



/*                    金菜さんの憂鬱                        */

１９９９年６月６日（日）：
お休み

１９９９年６月７日（月）：
gcc for win32
スケルトンファイル一覧
メイクファイルのソース

１９９９年６月８日（火）：
お便り
エディットコントロールの特定の文字列の色の変更方法
リッチエディットコントロールを使うのがいいかも
一部の文字の置き換えはCEdit::SetSel() と CEdit::ReplaceSel() 
お便り
分割ウィンドウ
動的分割の時はひとつのクラスを使う
でもインスタンスは別
各ペインのインスタンスは CSplitterWnd::CreateView() で作成

１９９９年６月９日（水）：
教えて！
質問のコード
演算子のオーバーロード＋継承で親クラスのメンバが呼び出せなくなる
昨日の質問
分割したあとにビューを置き換える
投稿は気兼ねなく

１９９９年６月１０日（木）：
昨日の質問の解決方法
親クラスを明示的に指定
優位性の問題
親クラスとのメンバ関数と同名のメンバ関数を作ると親クラスの方が隠蔽
サンプルコード
お便り
リッチエディットコントロールの作成がうまくいかない
新しく作り直すのがいいかも

１９９９年６月１１日（金）：
新しいメニューバーのテスト
DHTML のレイヤー機能
IE4 以上と NN4 以上のみ
動作原理は分からない、使えればいい
こういうプログラムもありかも
そういう変化

１９９９年６月１２日（土）：
オブジェクト指向プログラミング
「机上」のＯＯＰと「コード上」のＯＯＰ
机上のＯＯＰはクラスの設計
言語に依存しない
コード上のＯＯＰはすべてをオブジェクトと捉えること
正体は考えず、使い方に自然さを求める
このふたつを一緒にすべきかどうか
Ｃ＋＋プログラマーとしてはどちらもできなければならない



/*                    #pragma twice                        */


　Version 2.0
計算機の作り方

「というわけで、最初に作るアプリは、計算機にします」
『ぶーぶー、なんで計算機なの？　ゲームとか時計とか、もっとかっこいー
のがいいなー』
「もともとコンピューターっていうのは計算をするためのものだから、計算
機を作ると仕組みとか分かりやすいからね」
『ふーん』
「じゃ、まず新しいプロジェクトを作ってみようか。この前と同じ方法でい
いんだけど……憶えてる？」
『うん。えーっと……』
　デスクトップ上の "Visual C++ 6.0" をダブルクリックしたあと、メニュー
から【ファイル】−【新規】を選ぶ。ダイアログが開く。
『【MFC AppWizard (exe)】だよね』
「そうそう。あ、この前作ったとき、プログラムが最初っからできてたで
しょ」
『うん。ビルド、っていうの選んだらアプリ作れちゃった』
「そのための準備をしてくれるのが、 "AppWizard" っていうの」
『へ〜。これが、色々助けてくれてたんだ』
「ちなみに "App" は＜アプリケーション＞、 "Wizard" は＜魔法使い＞
って意味」
『あ、前に魔法とか言ってたものね。じゃーさ、最初の "MFC"は？』
「これも手助けしてくれたもの。前に "afxwin.h" って見たでしょ。こっち
の方にもプログラムがあって、それを利用しているからこの前のアプリも簡
単に作れたんだけど、その利用したプログラムを "MFC" って言うんだよ」
『えむえふしー、ねぇ』
「そ。これは今度しっかり見てくから、今はまだいいかな」
『はーい。えっと、【プロジェクト名】は、計算機アプリだから "Calc"と』
　左の欄から【MFC AppWizard (exe)】を選び、右の【プロジェクト名】に
"Calc" を書き込む。【位置】は前回作成した "FirstProject" があるフォ
ルダと同じ場所にする。
『これだけでいいんだよね』
「そうだよ」
『んじゃ、【OK】押して……っと』
　【MFC Appwizard ステップ 1】というダイアログが表示される。
『＜作成するアプリケーション＞ってどうするの？』
「今回もダイアログ」
『またダイアログ？』
「そ。他の【SDI】とか【MDI】とかは構造が複雑だから、わかりにくいんだ
よね。最初はダイアログから始めるのがいいと思うよ」
『そういうもんなんだ。じゃ、ダイアログと』
　【ダイアログ ベース】を選択する。
『そういえば、下の【リソース……】って、ダイアログとかアイコンのリ
ソース？』
「そうそう。リソースって文字をいっぱい使うから、リソースを付け替える
だけでアプリの英語版や日本語版を作り分けられるから」
『それをここで指定できるんだ。日本語でいいんだよね？』
「もちろん」
　【次へ】ボタンを押す。次のページ、【MFC Appwizard ステップ 2/4】が
表示される。
『いろんな設定あるね。これはそのままでいいの？』
「ここで＜使う＞とかセットしても、アプリ作るときに使うかどうかは分か
んないから、全部チェックしておいてもいいんだけどね」
『下の【ダイアログのタイトル】は？』
「この前ダイアログエディタで遊んだときに、ダイアログのタイトル変えら
れたでしょ」
『あ、あの右クリックメニューの【プロパティ】のことね』
「だからここで変えなくてもあとから変えられるから、というわけで
【次へ】だね」
『はーい』
　【次へ】ボタンを押す。次のページ、【MFC Appwizard ステップ 3/4】が
表示される。
『あれ？　これこの前見なかったけど……』
「この前はこのページ見ないで【終了】押しちゃったからね」
『そっか。一番上……は選べないね。真ん中の【ソースファイルのコメント】
って何？』
「＜ソースファイル＞っていうのはそのまま＜プログラムのファイル＞って
言っていいかな。コメントはコメント、つまりいろんな注意書きをあらかじ
め書いてもらうかどうかってことだね」
『そんなの書いてあった方がいいじゃん。てことはそのままと。その次の
【MFC ライブラリとのリンク】ってのもちょっと分かんないかな。 "MFC" 
って、さっき教えてもらったのだよね』
「そうなんだけど、これはちょっと難しいかなー。でもどっちでもいいんだ
けどね」
『これはまた今度って感じかな。じゃ、【次へ】と』
　【次へ】ボタンを押す。次のページ、【MFC Appwizard ステップ 4/4】が
表示される。
『あれ？　なんか見たことあるよーなのが……』
「この前のプロジェクトで、 "FirstProject.cpp" とか "FirstProject.cpp" 
っていうファイルに＜クラス＞っていうパーツが入ってる、みたいなことを
説明したでしょ」
『うんしたね。って、今言ったようなのを決めるのが、右下の欄ってこと？』
「そういうことだね。ま、このデフォルトが分かりやすいからこのままでい
いんだけどね」
『なーんか、結局そのまま素通りしたって感じ』
「今回のアプリ作り終えたら、ここまでのことたいがい理解できてるように
なってると思うよ」
『なってるかなー』
「努力しないとね」
『はーい。じゃ、【終了】っと』
　【終了】ボタンを押すと、【新規プロジェクト情報】というダイアログが
表示される。
『ここに書いてある＜作成されるクラス＞とかって、今さっきのページの設
定だよね』
「そういうこと。ま、このダイアログは確認だけだから、無視していいかな」
『はーい』
　【OK】を押すと、【ワークスペースウィンドウ】に【リソース】のツリー
が表示される。また、ダイアログエディタが起動してアプリのダイアログが
表示される。
「おーっと、たぶん色々したいと思うけど」
『したい〜、ダイアログいぢくりまわしたい〜』
「ひとつずつ憶えながらね」
『はーい』
「まず真ん中に【TODO:ダイアログのコントロールをここに配置】っていう
のがあるでしょ」
『トド？』
「なんでやねん。 "To Do" つまり＜すべきこと＞っていう意味」
『要するに＜ここにダイアログのコントロールを配置しろワレ！＞っていう
ことよね。で、＜コントロール＞ってなに？』
「＜コントロール＞っていうのはダイアログの上に載せる＜パーツ＞のこと。
右上にある【OK】とか【キャンセル】ってあるでしょ。これは＜ボタン＞
っていうコントロール」
『あ、押しボタン式、とかのボタンよね』
「そういうこと。あとこの【TODO:】もコントロールのひとつで＜スタ
ティック＞っていうの」
『スタティック？』
「＜静かで動かないもの＞って意味かな。このコントロールはただ文字を表
示するだけ」
『静物絵画、って感じなのかなー。ねーねー、他のコントロールは？』
「ここにあるよ」
　マウスカーソルがツールバーの上をクルクル回る。ツールバーの端には二
重線とｘボタン。左上にはカーソルの絵、そこからサボテン、Ａａ、ａｂＩ
などよく分からないボタンが並ぶ。
「ここにあるのがコントロール。ちょっとこの見た目だと分かりにくいと思
うけど、貼り付けてみれば見慣れたものだって分かると思うよ」
『じゃー貼り付けていい？』
「じゃ、ボタン貼り付けてみて」
『他のじゃダメ？』
「ダメ。また今度ね」
『なんか最近＜また今度＞多くない？』
「ギク」
『だから最近購読登録数伸び悩んでるんだよ』
　ガーン！！
「ま、今日はとりあえず計算機を作ることがメインだから、ね」
『はーい。ボタン、よね。……ボタンってどれ？』
「□の上に "XYZ" って書いてあるのの右隣、長方形の」
『言われてみればボタンっぽい形してるね』
　マウスカーソルが長方形の形をしたものの上へと来る。＜ボタン＞という
チップヘルプが表示される。
『で、どうするの？』
「ドラッグするのが簡単かな。そのボタンで押して、そのままダイアログへ
持っていって、離せばＯＫ」
　マウスカーソルがその通り動く。白枠に囲まれたボタンが貼り付けられ、
中に【Button1】と書かれている。
「ボタンのＩＤと名前、変えておこうか。＜プロパティ＞の出し方、憶えて
る？」
『もちろん』
　そのボタンの上で右クリック、メニューの一番下、＜プロパティ＞を選択
する。ダイアログが表示される。
「ＩＤとボタンの文字変えておこうか。ＩＤは "IDC_B_EQUAL" 、キャプショ
ンは "＝" ってところかな」
『ＩＤってこういうの……コントロールって言うんだっけ、このコントロー
ルの出席番号っていうか、背番号みたいなのだよね』
「そうそう。前にやったとおり、ここでＩＤ付けると、 "resource.h" って
いうファイルの中にこのＩＤが書き込まれるから」
『あれ？　この前見た時には、ＩＤって数字でも書き込まれてたよね。それ
は付けなくていいの？』
「付けなくていいっていうか、代わりに付けてくれるんだよ。僕たちプログ
ラマーにとって大事なのは数字じゃなくて、その別名のＩＤ名、つまり
 "IDC_B_EQUAL" の方ってこと。数字の方はＶＣが勝手に付けてくれるから」
『便利なのねー』
「ちょっと見ておこうか。メニューの【ファイル】−【すべて保存】を選ん
でから、 "resource.h" を見てみて」
『はーい。えっと……』
　マウスカーソルが動いて【すべて保存】を選択する。そのあと【ファイル】
−【開く】ダイアログから "resource.h" を選び、【開く】を押す。テキス
トエディタが開き、 "resource.h" が表示される。中には、次のような行が。

#define IDC_B_EQUAL                     1005

『ホントだー、なんかよく分かんないうちにＩＤに数字が』
「別に数字付けるのに悩む必要ないからねー。んじゃそのウィンドウ閉じて、
さっきのダイアログエディタの方にして」
『はーい』
　メニュー端のｘボタンを押して "resource.h" を消し、先ほどのダイアロ
グを表示させる。
「んじゃ、さっき作った【＝】ボタンの右クリックメニューの中から、
 【イベント...】っていうの選んで」
『イベント？』
　右クリックメニューの中から【イベント】を選ぶと、見たことのないダイ
アログが表示される。タイトルは【クラス CCalcDlg 用の Windows メッセー
ジおよびイベントハンドラの新規作成】と書かれている。
『う”、なーんかよく分かんないの出て来ちゃった』
「大丈夫大丈夫。右端のボタンの中から【追加と編集】っていうの選んでみ
て」
『追加と編集、ね……』
　【追加と編集】ボタンを押すとさらにダイアログが表示される。タイトル
は【メンバ関数の追加】。
『う”、またわけ分かんないのが……』
「これも【OK】押して」
『もうされるがままって感じね……』
　【OK】ボタンを押すと、すべてのダイアログが閉じ、ダイアログエディタ
も閉じて、テキストエディタが開き、なにやらプログラムのようなものが表
示される。

void CCalcDlg::OnBEqual() 
{
    // TODO: この位置に（以下略）
    
}

　２行目が選択状態として反転表示されている。
『キャーッ、プログラムよ、プログラムよあなたっ！！　早く退治し
てっ！！』
「まるでゴキブリみたいな言われようだね……。そう、これがプログラム。
火美ちゃんがこれから相対しないといけない相手」
『ええっ！？　私ゴキブリと対決しなきゃいけないの？』
「だからゴキブリちゃうて！！」
『でもわけ分かんないしー、なんかよくわかんないしー、やっぱゴキブリよ
ゴキブリッ！！』
「でもさ、これから火美ちゃんはプログラム作るんだから、自分で作れば怖
いものナシでしょ？」
『ゴキブリなんか作りたくない〜』
「ゴキブリを征する者は世界を征す！！」
『あ、なんかそれ分かる』
「分かるんかい！！」
『なんかこのわけ分かんないのを理解しなきゃいけないっていうのは、なん
か生理的にダメって感じがしないでもないんだけど、でも克服しなきゃね』
「そこまでイヤかな……」
『で！？　どうすればいいわけ！？』
「じゃ、 "TODO" の下の行に１行加えて、こんな風に書き換えてみて。

void CCalcDlg::OnBEqual() 
{
    // TODO: この位置に（以下略）
    MessageBox( "1 + 2 = 3" );
}

『この通りに？』
「そう、この通りに。大文字小文字ちゃんと区別してね。あと、全部半角ア
ルファベットでね」
『日本語使っちゃダメってことよね。うん、打ち込んだよ』
「じゃ、ビルドしてみて」
『え？　ってことはこれだけでいいの？』
「そゆこと」
　メニューから【ビルド】−【ビルド】が選ばれる。新たにウィンドウが生
まれ、ハードディスクが回り、止まったときには "Calc.exe - エラー 0、
警告 0" と表示されていた。
「はい、計算機完成！！」
『うそっ、もう！？　ホントに簡単に作れちゃうよねー。試していい？』
「いいよ。【ビルド】−【実行】ね」
　その通りにすると、ダイアログエディタで作ったとおりのダイアログが表
示される。
『ここまでは、この前の "FirstProject" と同じよね』
「じゃ、【＝】ボタン押してみて」
『ほい、ポチッとな』
　ボタンを押すとさらにダイアログが表示される。タイトルは "CALC" 、中
央には "1 + 2 = 3" と書かれている。
『うわーすごいっ！！　ちょっと変だけど、一応計算機って感じ！』
「そうでしょー」
『じゃーさ、＜２＋２＞を計算するときにはどうすればいいの？』
「さっきの１行を」

    MessageBox( "2 + 2 = 4" );

「にすればいいだけだよ」
『なーんだ、簡単よねー……ってあれ？』
「＜１０＋１０＞なら "10 + 10 = 20" 、＜１０−３＞は "10 - 3 = 7" 、
＜１３ｘ７＞なら……えっと」
『ちょっとオッサン……』


/*
    Preview Next Story!
*/
『なんか今日は言われたままって感じ』
「大丈夫だよ、そのうち慣れるって」
『ホント？』
「というわけで次回」
＜ Version 2.1 イベントと関数 ＞
『につづく！！』
「その違和感も少しずつ慣れて、次第に快感へと……」
『あんた最近変わったよね』


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

・未定。
　先週は「未定」なのに更新した、ってことで今回もそういうのあるんじゃ
ないかなーと期待してるあなたは甘い！！　とゆーわけで期待しないよう
に（爆）。今はなかなか忙しいのですよ……。






/*                        ご注意！！                        */
/*

　このメールマガジンをそのまま「返信」すると、作者のメールアドレス
（kab-studio@multimedia.design.co.jp）へと転送される仕組みになってい
ます。「まぐまぐ」もしくは「Ｐｕｂｚｉｎｅ」の管理者へメールを送りた
い場合には、直接そちらへメールを送ってください。

*/
/*

　このメールマガジンの購読登録を解除する場合には

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

　が便利です。また、購読解除についての詳しい情報は、
登録時に送られてきた「まぐまぐ」もしくは「Ｐｕｂｚｉｎｅ」からの
メールをお読みください。

*/
/*

　本誌のバックナンバーはＫＡＢ−ｓｔｕｄｉｏにはありません。
　まぐまぐの

http://bigbeat.tegami.com/~mgsearch/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!!                    */


