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

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

    送信日： 1999/05/17(Mon) No.007
    配信数： 1950（ Mag2 + Pubzine ）
*/




/*            １９９９年５月１７日の更新                */

・「ＫＴＬ」改変：
　ＫＴＬを更新しました！
　まずこれまでの分かりにくいメッセージマネージャの代わりになるクラス、
「プロシージャクラス」を作成！！　ウィンドウにもダイアログにも使える
シンプルなクラステンプレートです。
　そしてとうとう登場、「ダイアログコントロールクラス」です！　ＭＦＣ
のような「コントロールとメンバ変数の関連づけ」が、マクロやツールを使
用せずに実現できます！（つっても「コントロールから変数へと変換するク
ラス」は皆さんが作ることになるんですが（汗））。
　ま、とにかくサンプルプログラムをダウンロードしてどんなもんか見てく
ださい。目鱗もんっすよ！



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

１９９９年５月９日（日）：
　５月表紙の詳細な解説アリ！！　ＣＧに興味のある方は必読！！　そして
「最後の晩餐」とマンガの関係？

１９９９年５月１０日（月）：
　ウルトラキッド２からファンファーレフォトグラファへのバージョンアッ
プの知らせが来たことに驚喜乱舞し鼻血ぶー。

１９９９年５月１１日（火）：
　出島ＶＳ貴ノ浪。

１９９９年５月１２日（水）：
　関東ローカルの見られるＵＨＦなら松坂の出る西武戦やサッカーなんかも
見られますよという話。

１９９９年５月１３日（木）：
　若乃花ＶＳ雅山。芸術的試合を魅せる天才。そして点滅。

１９９９年５月１４日（金）：
　アニメのことばっか書いてあるいつも通りの日記。


１９９９年５月１５日（土）：
　イラスト描いて #pragma twice 書いてプログラミングして名刺作り手伝っ
て疲れちゃったという話らしい。別にそんな働いてるとは思えんが（汗）。



/*                    金菜さんの憂鬱                        */

１９９９年５月９日（日）：
プロシージャクラスにバグ
メンバ関数内のスタティック変数はすべてのインスタンスで共通の変数
テンプレート引数の違うクラスは別のクラス
結果、スタティック変数も別々
実行ファイルのサイズが増える
ＫＴＬ更新は来週


１９９９年５月１０日（月）：
ＫＴＬにコメントアウトを加えただけ


１９９９年５月１１日（火）：
ＫＴＬのダイアログアイテムクラスが完成
サンプルプログラムも完成
MFC+ClassWizard並のことがマクロを使わずにシンプルなコードで実現
お便り
リソースファイルの格納のされ方
 .rc と .res のファイル
テキストファイルと圧縮されてないバイナリーファイル
実行ファイルやＤＬＬにそのまま接続
お便り２
VCよりもC++からやり始めたほうがいい？
Ｃ＋＋を勉強して、そのあとＶＣを勉強するか
楽しみながら勉強するか
構文だけ憶えてもだめ


１９９９年５月１２日（水）：
コントロールクラスの詰め
必要なファイルだけインクルードすればいい
別々に存在するから片方だけ使うこともできる
コンパイルタイムでの自動的な選択が行われる
無理矢理テンプレート化しているから


１９９９年５月１３日（木）：
名前のないネームスペース」は少し使いづらい
お便り
ダイアログとアイコン
16x16 と 32x32 がうまくセットされない
CWnd::SetIcon() ＝＝ WM_SETICON 
タイトルバーのか、タスクマネージャのか
お節介を焼くから？
サンプルコード
ひとつのアイコンハンドルに１サイズのアイコン


１９９９年５月１４日（金）：
お便り
マイドキュメントとＶＣの「ワークスペースを開く」のデフォルト
レジストリの情報
レジストリエディタの「キー名のコピー」は便利


１９９９年５月１５日（土）：
ＫＴＬの更新準備
意味不明のエラー "C1001"
原因は同名のクラステンプレート
クラステンプレート関数の問題点
戻り値を受け取らないと関数が呼び出されない
サンプルコード
テンポラリ変数の作成
Ｃ＋＋とＣの違い？



/*                    #pragma twice                        */


　Version 1.4
ワークスペースの裏方さん

「じゃ、今回もプロジェクトファイルの中身を見ていこうか」
『はーい。えっと、この前は "FirstProject.dsw" の中身を見たんだから、
今回は "FirstProject.h" かな。あ、でもこの前見たんだっけ』
「そう、 "Version 1.2" で簡単に見たんだけど、とりあえずもう一度見て
みようか」
『は〜い』
　マウスカーソルが動き、 "FirstProject.h" がドロップされる。
『なんか色々と書いてあるね……全然わかんないや』
「ま、今はそうだろうけどね。でも最終的にはこれ全部分かるようになるか
ら」
『難しそう……』
「ま、この辺は次回解説するから、それまで忘れてていーよ」
『はーい。じゃ、次の "FirstProject.ncb" をドロップと……』
　続いて "FirstProject.ncb" がドロップされる。が、＜共有違反＞と書か
れたダイアログが表示される。
『あれ？　何この＜共有違反＞って』
「ウィンドウズのシステムのひとつで、ファイルを開くときに＜このファイ
ルはオレだけが使うんだっ！！＞とか指定しておくと、他から開けなくする
ことができたりするわけ」
『確かに自分が使ってるノートにいきなり落書きされたらムカツクよねー』
「確かに……」
『でもさ、ってことはこのファイルは他の何かが使ってるってことよね。何
が使ってるの？』
「このＶＣが使ってるの」
『え？　でも今何も……あ、ワークスペースは開いているから、もしかして
その関係のファイルってこと？』
「そういうこと。ワークスペース閉じてみ？」
　【ファイル】−【ワークスペースを閉じる】が選択される。その動きには
無駄がない。
『じゃあドロップして……って、あれ！？　 "FirstProject.ncb" のファイ
ルがない〜！！』
　マウスカーソルがフォルダの上でぐるぐる回る。 "FirstProject.h" の下
に確かにあった "FirstProject.ncb" のファイルがない。
「あるよ、ほら、一番最後の方」
　水希がマウスを取り、割り込んで選択する。一覧の最後から２番目に
"FirstProject.ncb" が来ていた。
『あ、ホントだー。でもなんで？　名前順に並べてあったのに』
「このファイルが更新されたから、一番後ろに移動したってこと」
『新しいファイルになったから、最後に追加、ってこと？　でも私更新なん
か……あ』
「そゆこと」
『ワークスペース関係のファイルだから、ワークスペースを閉じるとその情
報が書き込まれるんだ……』
「ワークスペース関連、つまり＜裏方さん＞のファイルって結構あるってこ
とだね」
『ドロップしてみていい？』
「もちろん」
　を聞く前に "FirstProject.ncb" がドロップされる。今度はダイアログは
表示されない。バイナリーエディタが起動し、数字とアルファベットが並ぶ。
『バイナリーエディタだからハズレだねー。でも最初の所に "Microsoft
 C/C++ program database 2.00" って書いてあるね。＜プログラムデータベー
ス＞っていかにも＜ワークスペースの情報＞って感じかなー』
「こんな風に、見て確認すると色々と分かるでしょ。じゃ、ついでにその下
の "FirstProject.opt" も見てみようか」
　フォルダの一番最後に "FirstProject.opt" がある。
『ファイル名から考えると、これもワークスペースを閉じたときに更新され
たファイルなんだ……じゃ、ドロップと』
　"FirstProject.opt" がドロップされる。再びバイナリーエディタが開く。
『今度は全然分かんない、書いてあること』
「ま、そういうこともあるさ」
『……』
「じゃ、次、 "FirstProject.plg" を見てみようか」
『は〜い。ドロップしてと……』
　テキストエディタが開き、日本語の多い文章が表示される。
『あれ？　<html>とか<body>って、見覚えあるような……』
「これはホームページなんかで使うＨＴＭＬのタグだよ」
『ホームページって、これがホームページなの？』
「そうだよ。ブラウザで確認してみようか」
　インターネットブラウザを開き、 "FirstProject.plg" をドロップする。
タグが消え、ローカルホームページとして表示される。
『へ〜。でも、これ、何が書いてあるの？』
「見覚えない？　特に下の＜アウトプット　ウィンドウ＞って部分」
『？？』
「じゃ、見てみようか。まず【FirstProject】のワークスペースを開いて」
『それってどうやるんだっけ』
「どうやるんでしょー」
『えっとねー、前回やった方法は、 "FirstProject.dsw" をドロップするの』
「正解！！　ちゃんと憶えてるじゃない」
『まーねー』
「他にはメニューの【ファイル】−【ワークスペースを開く】で 
"FirstProject.dsw" を選択するとか、【ファイル】−【最近使ったワーク
スペース】の一覧から選ぶとか」
『何よ、それが一番簡単じゃない』
　マウスカーソルが動き、【ファイル】−【最近使ったワークスペース】の
中から "FirstProject" を選択する。ワークスペースが開く。
「そしたら【ビルド】−【リビルド】を選んでみて」
『【ビルド】って、確か 1.1 の時に使ったよね。あ、でも【リビルド】と
は違うか』
「【リビルド】は＜もう一度【ビルド】し直す＞ってこと。だからほとんど
同じだよ」
『へー。あのときは、これしたらアプリができちゃったのよね……』
　メニューから【ビルド】−【リビルド】が選択される。ウィンドウが新し
く表示され、ハードディスクのランプが明滅する。
『あ、これ、これよこれ！！』
　マウスカーソルがその＜新しくできたウィンドウ＞の上をめぐるましく回
る。その下の文字は、 "FirstProject.plg" と一致していた。ハードディス
クが止まると、ダイアログが表示される。
『えっと、＜このファイルは外部のエディタで変更されています。再ロード
しますか？＞だって』
「今リビルドしたでしょ。その結果が新しく書き込まれたから、 
"FirstProject.plg" の中身が変わったんで、リロードしますかって訊いて
るんだよ」
『あ、ってことは』
　フォルダを表示させれば、 "FirstProject.plg" が一番最後に来ている。
『さっきの "FirstProject.ncb" と同じねー。ビルドすると勝手に更新され
るんだ。でもこれって何に使うの？』
「ネットワーク上のパソコンでビルドさせて、その結果をホームページ上で
見る時に使うらしいよ」
『らしいって何よらしいって』
「知らない。使ったことないもの」
『……』
「さて、今回はこれで終わりだけど、前回と今回をまとめてみようか」
『そうねー、いろんなファイルが出てきたけど、私なりにまとめるとすれば
こんな感じかなー』

FirstProject.dsw :
     ワークスペースファイル。下の FirstProject.dsp を含んでる。

FirstProject.dsp :
     プロジェクトファイル。どうやってアプリを作るのか、ってことが書
     かれてる。スイッチとか cl.exe とか。

FirstProject.clw : 
    ClassWizard ファイル。クラス（？）のことが書いてあるっぽい。

FirstProject.h, FirstProject.cpp : 
    クラスってのが入ってる。プログラムが入っていて、必要不可欠。

FirstProject.ncb, FirstProject.opt : 
    ワークスペースやプロジェクトの裏方さん。何かの情報を持ってる。

FirstProject.plg : 
    ビルドした時に表示される文章が入ってる。

FirstProject.aps : 
    わかんない。

『＜わかんない＞って情けなー』
「で、重要なのは "FirstProject.h" と "FirstProject.cpp" だけ」
『ええっ？　他は要らないの？』
「極端だなー、要らないんじゃなくて、特に気にする必要がないってこと。
この２つ以外は、ＶＣが自動的に更新してくれたり、他の方法で簡単に書き
換えられたりできるからね」
『そういえば "FirstProject.dsp" の時に＜スイッチを変える方法が他にあ
る＞とか言ってたよね。それ、ちょっと教えてくんない？』
「いいよ。【プロジェクト】−【設定...】ダイアログを開いてみて」
『あ、新しいメニューだね』
　マウスカーソルが動き、メニューをクリックする。【プロジェクトの設定】
ダイアログが開く。左半分には【設定の対象】【Win32 Debug】
【FirstProject】などが書かれ、右半分にはタブが並ぶ。
「このダイアログのすべての項目が、 "FirstProject.dsp" と一致してるん
だよ」
『へ〜。でも難しそう……』
「そうかもね。でもたとえば、右のタブの中から【リンク】を選んでみて」
　【リンク】タブで表示されたシートには、【カテゴリ】【一般】【出力
ファイル名】などの蘭がある。
『あ、この【出力ファイル名】のところに "Debug/FirstProject.exe" って
書いてあるけど、もしかしてこの名前でアプリが作られるってこと？』
「そういうこと。何もかも難しいわけじゃないでしょ」
『うん』
「それに、【カテゴリ】から【カスタマイズ】を選んでみて」
　【カスタマイズ】を選ぶとシートの内容が変わり、【インクリメンタルリ
ンクを行う】などのチェックボックスが現れる。
「この一番下の【開始メッセージを表示しない】をオフにしてみて」
『ポチっと……あれ、その下の【プロジェクトオプション】って欄が少し変
わった気がするけど』
「もう一度押してみれば？」
『ポチっと……あ、 "/nologo" って出てきた……私の記憶が確かなら、
どーっかでこの単語を見たよーな気がなきにしもあらず……』
「 1.2 の時に出てきたでしょ、 "FirstProject.dsp" の中に」
『あ、そうそう、スイッチのひとつで、確か……【ビルド】の時に色々表示
されるとかなんとか。あ、もしかしてこの下の欄って、そのスイッチそのも
のなんじゃない？』
「あたり！　この欄の中身がそのまま "FirstProject.dsp" に書き込まれる
わけ」
『で、実際にはこのチェックボックスを操作すればいってことなのね。なん
だ簡単じゃない！！』
「うん、そうでしょ」
『あれ？　ツッコミとか、調子に乗るなとか、ダメのダメダメとか言わない
の？』
「簡単だってことが分かること自体が、大切だからね」
『どういうこと？』
「それはまた今度。というわけでつづく！！」



/*
    Preview Next Story!
*/
『プログラミングってまだ先？』
「まだ先」
『なんかつまんないなー』
「じゃ、次回はアイコンとかメニューの話」
『え？　アイコンなんて簡単に作れるの？』
「作れるんだよね、これが」
『というわけで』
＜ Version 1.5 リソースファイル ＞
「につづく！！」
『次回は料理番組？』
「ちゃう」
『釣った魚を逃がす』
「ちゃう」
『大魔人佐々木』
「ちゃう」


/*            １９９９年５月２４日の更新予定                */

・未定……：
　なーんか最近忙しいんでちょっとお休みするかも（汗）。ま、日記、かな
ゆ〜、かぶヘッダー、辞書はいつも通り更新するからそれで我慢してね。



/*                        ご注意！！                        */
/*

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

*/
/*

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

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

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

*/
/*

　本誌のバックナンバーはホームページ上にはありません。まぐまぐの

http://bigbeat.tegami.com/~mgsearch/frame.cgi?id=0000012198

　にありますのでそちらをどうぞ。

*/
/*

　このメールマガジンは、
まぐまぐ（ＩＤ： 0000012198 ）
Ｐｕｂｚｉｎｅ（ＩＤ： 000590 ）
　を通して発行されました。

*/
/*
    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!!                    */


