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

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

    送信日： 2000/01/17(Mon) No.040
    配信数： 3360（ Mag2 + Pubzine ）
＊    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/


/*                        今週の「どう？」                        */

『じゃ、次のお便り』
「ってゆーかないんだよねー」
『なんですってー！！　っていつものことねー』
「そういえば、〈ぷらとわ質問箱〉って１通も来なかったらしいよ」
『うわさむー。やっぱこーゆー相互関係って無理あるんじゃない？』
「でも〈プログラミング辞書〉とか〈鏑矢の憂鬱〉とかは結構送られてきて
るみたいだけど」
『ってことは、テキトーにいっぱい作ってもダメってことなんじゃない？』
「そうかも。ってことは……」
『私たちは KAB-studio.h や #pragma twice についてのご意見ご希望ご感想
がとりあえず欲しいかな』
http://www2.justnet.ne.jp/~kabstudio/Info/MailMagazine/Impression/
「のページで送ってください」
『お待ちしてますぅ』


/*              ２０００年１月１３日（木）の更新                  */
http://www2.justnet.ne.jp/~kabstudio/Info/News/

・誕生日。
　 私、鏑矢正伝、２５歳になりました。イヤーン。
　っつーわけで作者について関係を更新しました。ってゆーか１年前とほと
んど変わってないんですけど(汗)。

[作者について]
http://www2.justnet.ne.jp/~kabstudio/Info/Kaburaya/


/*              ２０００年１月１７日（月）の更新                  */
http://www2.justnet.ne.jp/~kabstudio/Info/News/

・KAB-studio.h 縮刷版更新。
　KAB-studio.hの縮刷版、つまりこれまでの配信分を圧縮ファイルとしてま
とめたものを更新しました。今回は１号〜４０号までです。
　今回も「KAB-studio.h（#pragma twice 含む）」と「#pragma twice のみ」
の両方をダウンロードできます。ダウンロードはフリーウェアインフォメー
ションルームにて。

[フリーウェアインフォメーションルーム]
http://www2.justnet.ne.jp/~kabstudio/Freeware/


・ぷらとわ質問箱終了(笑)。
　 ぷらとわ質問箱、質問が１通も来ませんでした(爆)。さすがだ……。
　っつーわけでこの企画はなかったことにしてください(汗)。ぷらとわの質
問は鏑矢の憂鬱で受け付けますんでご安心あれ。実はこっちの方が送りやす
いかも？

[鏑矢の憂鬱]
http://www2.justnet.ne.jp/~kabstudio/Programing/KabuU/


/*                        チョー普通な日記                        */
http://www2.justnet.ne.jp/~kabstudio/nikki2/

２０００年１月９日（日）：
　テレビネタ中心。葵とかね。１話はそんなでもなかったなーと。

２０００年１月１０日（月）：
　実験レポート完成。そしてヒゲ問題！　ヒゲソリを選ぶのはなかなか大変
なのですよ。ええ。

２０００年１月１１日（火）：
　全線開通した多摩モノレールに乗ってみました。んで久しぶりのガッコ。
STL 原理主義(笑)。

２０００年１月１２日（水）：
　初雪。誕生日前。実はそんなに語ってない(汗)。

２０００年１月１３日（木）：
　誕生日に、その生涯初めて「電車に忘れ物」をする(爆)。その関係で新宿
に行ってラーメン食べました。ええ。

２０００年１月１４日（金）：
　FUNK THE PEANUTS[R] の CD ゲット。それと久々のアニメいっぱいの金曜
日。２５歳になってもかいって感じがせんでもないが(汗)。

２０００年１月１５日（土）：
　ぷらとわの今後の予定。と、研究室。大学４年生になるんで卒検に着手し
て卒論書かなきゃなんないのです。


/*                         鏑矢の憂鬱                             */
http://www2.justnet.ne.jp/~kabstudio/Programing/KabuU/

２０００年１月９日（日）：
お休み

２０００年１月１０日（月）：
実験レポート完成
プログラムを作る理由とは？
わては「アプリを作るため」じゃない
とりあえず「ライブラリを作ること」が目的のひとつ
プログラムの元になるプログラムを作る
現在の流れと逆行
現在の流れは「オブジェクト指向設計」を中心としている
それつまんない
STL 推進派がいればわてみたいなプログラマーも……

２０００年１月１１日（火）：
STL アルゴリズムの使い方
サンプルコード
積極的に STL アルゴリズムを使うことがコツ
関数オブジェクトを作って STL アルゴリズムに噛ませる
STL アルゴリズムの魅力は「ループを関数に置き換えられる」こと
関数内 typedef は便利
お便り
DFT や FFT ににいてのページの紹介
ソースや使用例があって便利そう
お便り
WM_MOUSEWHEEL をシステムフックで削除したい
GetMsgProc() で削除
GetMsgProc() の lParam はそのままウィンドウプロシージャに送られる

２０００年１月１２日（水）：
お便り
STL ファンを増やそう
移植性が高い
std::string や std::vector
STL アルゴリズムもね

２０００年１月１３日（木）：
忘れ物したからお休み

２０００年１月１４日（金）：
お便り
曲線を描くとギザギザになる
ブレゼンハム
解像度やアンチエイリアスの問題？
実数値を細かく取り、その中から整数値をきれいに拾うとか？
お便り
Singleton の継承方法は？
std::auto_ptr の使い方は？
Singleton はクラステンプレートにするのがよさそう
サンプルコード
static メンバ変数をテンプレートで表すのは面倒
std::auto_ptr は memory にある
サンプルコード
使い方が結構大変

２０００年１月１５日（土）：
お便り
Singleton のインスタンス作成を各世代で行う
ポリモーフィズム的にまずいような気が
お便り
システムフックだとメッセージの修正ができない
そんなことはないと思う……
サンプルコード
フックプロシージャが呼ばれてるかチェック
DLL が呼ばれてるかチェック
他のアプリが邪魔してないかチェック


/*                       今週の追加単語                           */
http://www2.justnet.ne.jp/~kabstudio/Programing/Dictionary/

・追加単語：
パス 動画 Visual

・今週のごめんなさい
デバイスコンテキスト XML HANDLE namespace

　お、ちょっとずつ増えてきましたね。いい傾向かも。どんどん送ってねん。
　あと検索するときは「大文字・小文字を区別する」をオフにして検索する
と見つかりやすいと思います。


/*                       #pragma twice                            */
http://www2.justnet.ne.jp/~kabstudio/Programing/PragmaTwice/

　Version 3.15
２５６色のアイコン

「では、今回もアイコンについてみてみましょう」
『ってゆーか、そんだけ書くとこあんの？』
「あるんだよね、これが。まずとっても重要な、色数について解説しましょ
う」
『そーそー、このパレットにある色って原色ばっかでつまんない。これ変え
るのどうすんの？』
「変えちゃダメー」
『えー？？』
「アイコンのうち、【スモール (16x16)】と【標準 (32x32)】は、ここにあ
る色で描かなきゃダメなの」
『ダメってどーゆーことよダメって！！』
「じゃあ試してみようか。【色】ツールバーからどれかいらなそうな色を選
んで」
『んじゃ灰緑色』
「そしたらメニューの【イメージ】−【色の設定】を選んで」
『色の設定……色選ぶダイアログ！　これで色変えられるんだ』
「好きな色作ってみて。あ、中間色っぽいのね」
『つまりパレットになさそうなのってことねー。じゃー薄緑』
　RGB : 230, 250, 230 の色を選ぶ。
『で OK ね』
「その色で IDR_MAINFRAME の大きい方を塗りつぶして……」
『ビルドしてエクスプローラーで見る！　……真っ白！？？』
「ほら、ダメだったでしょ」
『なんでー？？』
「そういうシステムなの。【スモール (16x16)】と【標準 (32x32)】は最初
のパレットに用意されている〈ウィンドウズが必ず持っている色〉で塗らな
きゃダメってことだね」
『必ず持ってる色？』
「そう、環境によって」
『また環境〜！？』
「その環境次第で色数は変わるわけだから、そういうのに左右されないよう
にってことだね」
『……でもでも！！』
「言いたいことは分かってます。明らかにこれ以外の色使ってるアイコンが
あるってことでしょ？」
『そーそー、ドライブとかのアイコンって色数多いよ絶対』
「じゃ、そのアイコンを作ってみようか」
『え、作れるの？』
「もちろん。えっと、今 IDR_MAINFRAME のアイコンを開いてるよね」
『うん』
「そしたら【デバイス】のドロップダウンリストの右にある【白い紙に灰色
の重り】みたいなアイコンを押して」
『あたしには〈灰色の重り〉がモニターに見える』
　【アイコン イメージの新規作成】というダイアログが表示される。
『あー！！　256 色とかある！！』
「そ、この中から【 32x32, 256 色】を選んで OK 押して」
『はーい。ん？』
「これで新しいアイコンができたよ。【デバイス】のリスト見てみて」
『【スモール (16x16)】と【標準 (32x32)】、それに【 32x32, 256 色】が
ある。つまり新しく IDR_MAINFRAME にこのアイコンが加わってことねー』
「そういうこと。じゃ、いろんな色の塗り方を教えましょう」
『おー！』
「まず【ワークスペース】の【Icon】−【IDR_MAINFRAME】を右クリックし
て【プロパティ】を選んで」
『？？　いつものフツーのプロパティだよ』
「このプロパティのダイアログの左上に、【ヒョウタンがびょう】のアイコ
ンがあるでしょ」
『これをクリックする、がびょうが刺さった……ように見える、けど？』
「こうすると、このダイアログが勝手に閉じなくなります」
『あ、そういえばこのダイアログって他のとこクリックするとすぐ消えちゃ
うんだよね。へー、がびょうねー、確かにそんな感じかも』
「そしたら……そうだね、【デバイス】の文字でもクリックして？」
『なにそれ』
「とりあえずクリック」
『……はーい。クリック。でもなんも変わんないし』
「変わってるよー。さっきのプロパティダイアログに」
『あ！　【パレット】ってページができてる！』
「そのページには」
『色がいっぱい！！』
「この中から色を選んで、アイコンを塗ってみて」
『んじゃグラデっぽく塗ってみましょう！』
「塗ったらビルドしてみてね」
『はーい。ビルドしてエクスプローラーで……うん、きれいなアイコン！　
やっぱ２５６色っていいねー』
「あ、もしなんなかったら、前回の〈 IDI_ICON をエクスプローラーで表示
するアイコンにする〉にしたままかもしれないから気を付けてね」
『それ戻すのってどうすんの？』
「した直後なら【元に戻す】でいいし、直接直すなら、プロパティダイアロ
グで IDR_MAINFRAME=20 ってすれば」
『ＩＤナンバーがいちばん小さいアイコンになるから表示されるってことね』
「そういうことだね」
『ふたつばっか質問！　IDR_MAINFRAME にある【標準 (32x32)】ってどーす
んの？　これってもう要らない？」
「ううん、必要だよこれも。たとえば、【画面のプロパティ】で【色数】を
【256 色】にしていると、【標準 (32x32)】のアイコンが表示されます」
『……また環境なわけね……』
「あと初期の Win95 だと High Color でもそうなるみたいだね」
『そーゆー環境の人のために、【標準 (32x32)】も用意しとけ、と』
「……そんなに嫌そうに言わないでよ」
『いやよイヤイヤ！！　なんで、そんなにいろんなユーザーのこと考えな
きゃいけないの？　なんかすっごく大変！』
「別に考えなくてもいいけどね」
『へ？』
「環境への対応って限界があるからね。お金を払ってもらうシェアウェアや
パッケージソフトならともかく、フリーウェアでそこまでやる必要はないの
かも」
『ってそこまで言い切っちゃうのもなんかって気もするけど……それに、
シェアウェアとかならやっぱしなきゃいけないってことなんでしょ？』
「お金もらうんだから、それ相応のことはしなきゃね。それこそ、スタッフ
雇って、そういう部分を任せたりしてもいいんだし、ある意味、それくらい
はしないとね」
『つまり、代金相応のもんを作れと！』
「そういうこと。火美ちゃんはまだこのレベルなんだし、フリーウェアで実
力を着けるのがいいかなって思って」
『へー』
「ってゆーか、火美ちゃんにパッケージソフトなんか任せられないし」
『う”っ』
「ってまだこのレベルなんだから落ち込まなくていいよ。もちろん、将来的
には」
『水希ちゃんの右手？』
「それを言うなら右腕でしょ」
『……あ、もひとつ質問があったんだよね、えっと、【プロパティ】のパレ
ットにない色はさっきみたいに作ればいいの？』
「いや、それはダメ」
『え〜？』
「さっきの１６色みたいに、このパレットは〈ウィンドウズが必ず持ってる
色〉が入ってて、この中から色を選べば〈必ず表示される〉って約束されて
るから」
『それも環境ってこと？』
「うーん、どうなんだろう。たとえば【画面のプロパティ】の設定が High 
Color だと、６万５千色しかディスプレイに表示できないでしょ」
『うんうん、パンフとかにそう書いてあるよね』
「この６万５千色は自由に変えられて自由に使われるんだけど、さっきの
【プロパティ】のパレットにある色は〈変えられることがない〉ってこと」
『あ、だから安全ってこと？』
「そういうことになるかなー」
『……なんかさっきから曖昧ね〜』
「実際、これは色作っても問題ないかも」
『そうなの？』
「たぶん」
『……』
「じゃあ最後に〈画面の色〉について見ておこうか」
『画面の色？』
「ドキュメントには〈画面の色〉って書かれてるんだけど、〈透明色〉の方
が分かりやすいかな」
『そういえばアイコンって透明な部分とかあるもんねー。そういうの？』
「そういうの。【色】ツールバーに【濃い緑色を表示するディスプレイ】み
たいなのがあるでしょ」
『ある！　これが透明色？』
「そう。この色を選択して」
『塗りつぶしてビルドしてフォルダで見る！　あら、透明』
「こうやって、アイコンの一部を透明にすることができます」
『でもなんで濃い緑色なの？』
「あ、これは変えられるよ。ダブルクリックすると」
『色選ぶダイアログが出た、けど変えちゃいけないんじゃないの？』
「別に色を変えるわけじゃないから」
『？？』
「このダイアログでどんな色を選んでも、塗られる色は絶対に〈透明色〉だ
から。ここで選ぶ色は、塗る人が分かるようにするため」
『あ、フォトレタッチアプリで〈透明〉が白と灰色のタイル模様で表示され
るのと同じことってことだよね』
「そうそう、それと同じ。ここで選ぶ色は〈この色は透明色〉ってことが分
かるための目印だから」
『もしアイコンが緑をよく使うんなら、この透明色を赤にすればいいってこ
とだよね』
「そういうこと」
『んじゃ、透明色の下のは？』
「これは〈選択色〉って言って……まぁ試した方が早いかな」
『選択色を選んで塗りつぶしてビルドしてフォルダで見る。あれ、真っ黒』
「１回クリックしてみて」
『クリック。あ、透明になった！　どゆこと？』
「この選択色で塗ると、選択した時やドラッグしたときに透明になるってこ
とだね」
『へー。で、これって使い道あるの？』
「ないと思う……」
『やっぱねー』
「んじゃ、アイコンについてまとめてみようか」
『えっと、まずダイアログ用に別のアイコンを作っておく！』
「そのアイコンは小さいのだけにしてね」
『それとフォルダに表示されるアイコンは、一番ＩＤナンバーっていうのが
小さいアイコン』
「デフォルトだと IDR_MAINFRAME だからこれはそれほど気にしなくていい
かな」
『んでそのフォルダに表示されるのに、２５６色のアイコンを加える、と』
「どの色のアイコンも、パレット関係には気を付けてね」
『ってことは、全部で小さいのふたつ、大きいのふたつを作んなきゃいけな
いってことだよね』
「数としてはね。小さいのは１個作ってコピーすればいいけど」
『大きいのは１６色と２５６色で色数が違うから、別々に作んなきゃいけな
いんだ。でもほとんど同じなんだから楽そうだけどね』
「んじゃアイコンを作っちゃいましょー！」
『おー！』
　１時間経過。
『できたよー』
「どれどれ……ギャー！！」

/*
    Preview Next Story!
*/
『ひどーい、何そのリアクション』
「いや、ねぇ、もうちょっと分かりやすいのとか」
『分かりやすいの？』
「そうそう」
『というわけで次回』
＜ Version 3.16 String と Version ＞
「につづく！！」
『できたよー』
「あれ、これはまた【アクセサリ】の計算機のに似てるね」
『うん、コピーして貼っつけたの』
「ダメーっ！！」


/*                      ぷらとわ質問箱                            */
http://www2.justnet.ne.jp/~kabstudio/Programing/PragmaTwice/

　……１通も来なかった(爆)。
　さすがに１通も来ないとは、予想だにしてなかった。ってゆーかこのメル
マガほんまに読まれとるんか？(汗)
　と、ゆーわけでこの企画はなかったことにしてくださーい。
　質問はかぶゆ〜に送っていただければ必ずお答えいたします。

[鏑矢の憂鬱]
http://www2.justnet.ne.jp/~kabstudio/Programing/KabuU/


/*                       金菜さんの憂鬱                           */
http://www2.justnet.ne.jp/~kabstudio/Programing/KanaU/

アプリのツボ
#04 テキストエディタ その４

　今回も、テキストエディタを自分で作るときのヒント。日本語入力用シス
テムのことを一般的に IME （ Input Method Editor ）といいます。ウィン
ドウズでは IME を操作するための API 群が用意されています。プレフィッ
クスが Imm の関数ね。
　たとえば、変換ウィンドウを特定の位置にセットするときには、こんなふ
うにします。あ、これも中途半端な知識で作ったものだから、問題点あるか
も。自分で使うときにはしっかり調べてみてね。


void DoIME( HWND p_hWnd )
{
    HIMC hIMC
        = ::ImmGetContext( p_hWnd );

    COMPOSITIONFORM stComposi;
    stComposi.dwStyle = CFS_POINT;
    stComposi.ptCurrentPos.x = 20;
    stComposi.ptCurrentPos.y = 20;

    ::ImmSetCompositionWindow( hIMC, &stComposi );
    ::ImmSetOpenStatus( hIMC, TRUE );

    ::ImmReleaseContext( p_hWnd, hIMC );
}


　この位置を、カレットの移動に合わせて調節しなきゃいけないわけ。もち
ろん、すでに入力されている文字なんかともうまく整合性取らないといけな
いしね。
　他にも、行ごとに文字を表示するとき、１行目と２行目の間隔の取り方を
間違えたらとんでもないことになるよね。ちゃんと等間隔になってるか、
フォントを変えたら間隔も変わるか、ひとつひとつの文字が揃ってるか。し
かもこういうのってＡＰＩのクセとか結構あるし、細かい実装部で苦労しそ
う。
　ま、リッチエディットコントロールにできるんだから、普通のプログラム
にできないわけはないんだけど、大変なことは確か。もしリッチエディット
コントロールで済むんなら、新しく作るなんてちょっと無意味かも。プログ
ラミングの勉強には向いてるかもしれないけどね。

　最初に言ったけど、エディタの必要性は今高くなってきてるから、急に必
要ってこともあるでしょ。そういうときには、色々と選択肢があるんだって
事を思い出してね。来週はファイラー。じゃね。


/*            ２０００年１月２４日（月）の更新予定                */
http://www2.justnet.ne.jp/~kabstudio/Info/News/

・更新ナシ。
　ん、特に更新するネタがないなー。


/*                          ご注意！！                            */

・このメールを返信しないでください。
・感想はこのページから送ってください。
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://bigbeat.tegami.com/~mgsearch/frame.cgi?id=0000012198
http://www2.justnet.ne.jp/~kabstudio/Freeware/

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

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


/*                      See you next week!!                      */


