鏑矢の憂鬱2000年4月後半
透明1ドットイメージ
 
2000/04/16 (Sun)
・今日はお休みよん。
透明1ドットイメージ
 
2000/04/17 (Mon)
・ふみぃ。
 
・今日の情報理論では「2進木」をやりました。2進木ゆーたら std::set とか std::map が有名ですが(ホンマか?)、今日やったのはそーゆーのとちょっと違って、バイナリーデータの話。バイナリーデータって2進数だから、それだけで2進木が形成できるわけですな。そこからたぶん圧縮とかの話になってくんだと思うです。あー宿題出ちゃった、しないと。
 
・今日のお便り〜。
 
透明1ドットイメージ
透明1ドットイメージ
 こんにちは。
 私は現在、NTのサービスに関するプログラムを組んでいます。
 実現したい内容は、
 1.サービス開始時にスレッドを生成し、以下の処理を行う。
 2.システムフックによりマウス・キーボードの動きを監視する。
 3.一定時間操作がなかった場合、トップにウィンドウを表示する。
 4.ウィンドウ上で、マウス・キーボードのイベントが発生した場合、
   パスワードダイアログを表示し、パスワードが正常なら、ウィンドウを
   非表示にする。
 5.2に戻る。
 といった、NT版の擬似スクリーンセーバーです。
 1のスレッド生成の部分は、すでに実現できているのですが、サービスに乗っけてしまうと、システムフックはおろか、画面の生成さえ上手くできなくなってしまいます。そもそもサービスからウィンドウを生成することはできないのでしょうか?
 お願い致します。
透明1ドットイメージ
透明1ドットイメージ
 
・ごめんなさい! 僕はサービス作ったことないんでよく分からないです(泣)。 NT 持ってないから試すこともできないし。ごめんなさい〜。なんか最近役立ってないような気がするなー。休みも多いし、たまに書いても授業のこじつけだし、えーかげんやめどきかもなぁ、ここ……。
 
・でわまたぁ。
透明1ドットイメージ
 
2000/04/18 (Tue)
・今日の授業は情報処理論第二。一応、第一からの続きなんだけど、それ受けたの数年前だし(汗)。ちなみにセンセは計算機工学の人ね。今日は「 n 番目に大きい値を見つける」とゆーアルゴリズムの話。実装方法と計算量が解説の中心。計算量の部分は数学の話なんでちょっと難しいです。今日は無理だけど、木曜とかにでも実際に組んでみましょう。
 
・あとCマガ買ったんで BCC や BCB を試してみようかと思ったんだけど時間ない〜(泣)。これも明日か木曜ね。
 
・今日のお便り。
 
透明1ドットイメージ
透明1ドットイメージ
 情報理論について。
 川端センセの情報理論第一(?)が2週続けて登場しているようですが、やっぱしそれだけ面白いという事でしょぅか。 混ざって受講(潜り込み)できるような雰囲気なら、遊びに行ってみたいような気もするのですが…。 ネタついでにもちっと内容を紹介して下さい。
 なんてこと書いてもいいのでしょうか…。
透明1ドットイメージ
透明1ドットイメージ
 
・書いてもおっけー(爆)。いや別に、川端センセの授業は良くないです(爆)。最近かぶゆ〜向けのネタがなくて……。ただね、去年のこの授業は酷かったのよ。黒板は取りづらいし、どんどん先に進むしで。で、授業の最後にガッコ側でアンケート取るんだけど、それがよっぽど悪かったんでしょう(汗)。だから川端センセ、今年は心入れ変えて努力してるみたいです。
 
・ここ最近のかなり分かりやすい授業はそのせいっぽいです。んでも数学的な部分に踏み込んでからも、これが続くかどうかは不安(汗)。ま、そんなわけで最近いいのはいわゆる「当社比」な感じです。「従来製品より15%性能アップ!」みたいな?(なんか酷いこと書いてる……もし goo とかで見つけても怒んないでくださいね。ってゆーか今年のがんばりはすごいです。がんばって!)ってなわけで授業受けに来る必要はないでしょう(爆)。
 
・もひとつお便り。
 
透明1ドットイメージ
透明1ドットイメージ
 こんにちは。昨日NTのサービス関する質問をした者です。
 今日は質問ではないのですが、書かせていただきます。
 サービスの件に関しましては、無事解決することができました。単なるパラメータの設定ミスだったようです。お騒がせしました。
 
 ところで、私の質問の返答に、「いいかげんやめどきかも」と書いてありましたが、やめないで下さい。いつも参考にさせていただいています。VCのコーディングで分からないことがあったら、いつも一度はここにお邪魔しています。今後もがんばって続けてくれることを願っています。
 では。
透明1ドットイメージ
透明1ドットイメージ
 
・ありがとうですー。まー昨日はナーバスダウンな感じだったんで口走っちゃいましたが、とりあえず当分の間は続けていくんで大丈夫です。今日の情報処理論はネタになりそうだし(爆)。昨日の件、解決してよかったです。あんま役立たないかもしんないけど、これからもちょくちょくよろしくねー。
 
・でわまたっ!
透明1ドットイメージ
 
2000/04/19 (Wed)
・今日の授業は信号処理論。去年と違って、今年は畳み込み積分とか分かってるんで、結構しっかり授業聞けてます。今のところは(汗)。「掛け算がフーリエ変換すると畳み込みになる」って部分、しっかりやっとかないとイメージ掴めないかも。あとでネットをあさってみよう。
 
・今日のお便り!
 
透明1ドットイメージ
透明1ドットイメージ
 こんにちは、Echizenです。
 BitBltのことについて勉強中に分からなくなってしまいました.
 LineTo関数などで一度別のメモリデバイスコンテキストに書きこんで一気に表示させようと思い,下のようなプログラムを作ってみたのですが思い通りに動いてくれません。
 一体なにが悪いんでしょうか?
 
void CCDCTestView::OnDraw(CDC* pDC)
{
	CCDCTestDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	CDC Test;
	Test.CreateCompatibleDC(pDC);
	Test.TextOut(0,0,"Test");
	Test.MoveTo(0,0);
	Test.LineTo(200,200);
	pDC->BitBlt(0,0,200,200,&Test,0,0,SRCCOPY);
}
	
透明1ドットイメージ
透明1ドットイメージ
 
・そーそーそー、これって初めてだとすごく悩むんですよねー。わても最初かなり悩んだ記憶が……まーそれは置いといて。メモリデバイスコンテキストを作るとき、重要なのは「ビットマップを作る」こと。デバイスコンテキストは「ビットマップ」や「ペン」「フォント」とかを「持っている」でしょ。実は、デバイスコンテキストに対する描画は、この「今持っているビットマップ」に対して行われるんです。
 
・だから、メモリデバイスコンテキストを作るときには、同時にビットマップも作って、デバイスコンテキストに持たせなきゃいけないんです。具体的には、 Test.CreateCompatibleDC() 呼んだ後、 CBitmap 型変数を作って、 CBitmap::CreateCompatibleBitmap() に pDC を渡してビットマップを作成して、んで CBitmap 型変数を Test.SelectObject() に渡せば、メモリデバイスコンテキストがビットマップを持つんで、そのあとの描画がこのビットマップに描き込まれるというわけです。
 
・ま、詳しくはCodianのオーナードローメニューの作製(後編)を見てくださいです。あと、ここの例にあるように、いちいち OnDraw() で作るよりは、メンバ変数として CDC と CBitmap を持って、最初に初期化してからっていう方法の方がいいと思うです。さらに、メモリデバイスコンテキストへの描画も別でして、 OnDraw() は転送だけ、っていう方がさらに重くなく済むかもしんない。ま、その辺は実際に試してみて決めてください。
 
・でわまたっ!
透明1ドットイメージ
 
2000/04/20 (Thu)
・今日の授業は電子回路。プログラミングと関係ねー!!(爆) うむ、他のネタだな。
 
・おととい買ったCマガについてる BCC5 をインストールしてみました。まだあんまよく分かんないんでとりあえず簡単に STL のコンパイルテストをしてみましたが、難なく通ってひと安心。ただ、コンソールアプリだと、 BCC5 を使うメリットってそんなないんだよね、 gcc があるから。
 
・ただ、 Win32API を使ったウィンドウズアプリ作るときには、 gcc よりも BCC5 の方が向いてるかもしんない。あーでも、 gcc を使いこなしてないだけかも。 BCC5 の方も、 makefile の作り方とかを調べないと使いこなせない感じがあるかな。まーどっちも、結局はテスト用だけど(汗)。ちなみに BCB5 は、インストールに個人情報の送信が必要ってことが分かってやめとく(爆)。
 
・再セットアップっでかなりめんどいのがキーカスタマイズのやりなおし。秀丸はファイルに保存できるのに、 VC のはできんのでねぇ。そのキーカスタマイズを、ここのネタにしようかなと思ったんですよ。前に一度、かなゆ〜のころに載せてるんだけど、アーカイブ化しちゃってるんで(とゆーいいわけ付きで)。しかーし! 今のキーアサインはエルゴフィットキーボード用だから皆さん使えない(爆)。
 
・なんで、とりあえず「この機能はよく使うんでキーを変えてる」ってのを載っけときましょうか。わては「気付いたら全セーブ」な人なので【ファイル】の FileSaveAll 。1関数打ち込んだらセーブ、みたいにしてます。【編集】は CharLeft, CharRight LineDown, LineUp をダイヤモンドカーソル化してます。これがあるとないとではかなり大きいです。
 
・移動系は WordLeft, WordRight LineStart, LineEnd 。この辺とかダイヤモンドカーソルは一太郎のが残ってますな。「改行」がないんで代わりに LineOpenBelow 。あとは DeleteBack Undo Paste の標準どころ。あと WordLeft -> WordUpperCase -> WordRight をマクロに登録して、キー1発で実行できるようにしてます。 WM_USER みたいなすべて大文字の単語を入力するときスゲー便利。 CapsLock の解除のし忘れに悩んでるあなたは試してみよう!
 
・で、実はこれ、秀丸もまったく同じようにカスタマイズしてます。このカスタマイズがわての入力速度を維持してくれるのですな。だったら秀丸でコーディング、とも思うんだけど、 VC エディタは C++ 専用の色指定やインテリセンスが優れてるからね。たとえば gcc や BCC5 を使ったプログラミングでも、エディタは VC の使ってたり。
 
・でわまたっ!
透明1ドットイメージ
 
2000/04/21 (Fri)
・今日は授業はなかったんでプログラミングの話はナシ<って……。
 
・今日のお便り。まずひとつめ。
 
透明1ドットイメージ
透明1ドットイメージ
 SDIのウィンドウの中にもう一つウィンドウを作りたいのですがどうすればいいのでしょう。
 具体的に何がやりたいかというと秀丸エディタなどのように行番号を表示したいのです。基本クラスはCEditViewです。
 よろしくお願いします。
透明1ドットイメージ
透明1ドットイメージ
 
・行番号を表示ですかー、ちょっと難しいです。エディットボックスの上に子ウィンドウを作っても、その下にエディットボックスの文字が入り込んじゃうんですね。だから、行番号的にするのであれば「分割ウィンドウ」みたいにして、ふたつのウィンドウを左右並べて表示するっていうのがいいんじゃないかなぁ。
 
・分割ウィンドウを作る方法は、いろんな本とかに載ってるんでそちらを見てねん。ちなみに秀丸エディタは、普通のウィンドウとして作って、行番号とかも含めて全部自前で処理してます。うーむ、すごい……。あ、エディットボックスの上に子ウィンドウを貼り付ける方法も載せておきましょう。エディットボックスのメッセージをコントロールすれば、うまくいくかもしんないし。
 
・えっとまず、クラスウィザードで「クラスの追加」、基本クラスを generic CWnd にしてテキトーにクラス名付けてクラス作ってください。クラス作ったらそのクラスをビュークラスのメンバ変数として持たせてください(そのメンバ変数名を m_cWnd とします)。新しく作ったクラスを使うためにビュークラスの cpp ファイルと CWinApp 派生クラスの cpp ファイルで、新しく作ったクラスのヘッダーファイルをインクルードしてください(インクルード位置は #include "stdafx.h" のすぐあとね)。そしたらクラスウィザードを使ってビュークラスの OnActivateView() をオーバーライドして、次のコードを書き込んでください。
 
void CMy20000421View::OnActivateView
		(BOOL bActivate
		, CView* pActivateView
		, CView* pDeactiveView) 
{
	// ここから
	if( bActivate == FALSE || m_cWnd.GetSafeHwnd() != 0 )
		return;

	CRect cRect;
	GetClientRect( &cRect );
	cRect.right = 200;
	BOOL bRes;
	bRes = m_cWnd.Create
		( AfxRegisterWndClass( 0, 0, (HBRUSH)(COLOR_BACKGROUND), 0 )
		, ""
		, WS_CHILD | WS_VISIBLE
		, cRect
		, this
		, 300 );
	// ここまで。
	
	CEditView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}
	
 
・これでビュークラスの上に子ウィンドウが作られます。あとは新しく作ったクラスの OnPaint() とかをうまく実装すればいいかな。まー、基本的に、こーゆー結構簡単そうなことが実は難しかったりしますです。こつこつやってった方がいいかもしんない。
 
・もひとつお便り。
 
透明1ドットイメージ
透明1ドットイメージ
 こんにちは、Echizenです。
 早速やってみます。
 どうりでビットマップを表示した場合はビットマップのサイズの部分だけは描画ができるわけだ。
 ありがとうございました、またわからなくなったら質問すると思いますが、よろしくお願いします。
透明1ドットイメージ
透明1ドットイメージ
 
・うん、うまくいきそうですねー。メモリデバイスコンテキストのサイズは、持たせたビットマップのサイズってことになります。この辺が分かれば大丈夫でしょう。やっぱこーゆー概念的なものが大事なんですねー。ウィンドウズなんて、その解説だけでやってけそうな気がする(汗)。
 
・でわまたっ!
透明1ドットイメージ
 
2000/04/22 (Sun)
・今日はお休みですー。
透明1ドットイメージ
 
2000/04/23 (Mon)
・どひー、今日もお休みだぁ。なんか最近、プログラミングする気おきん……。
透明1ドットイメージ
 
2000/04/24 (Tue)
・今日は情報理論の授業。ってゆーかこれでネタ埋め(爆)。今日は数式の証明とか、あと「エントロピー」についてのかじりとか。あと辞書の順番についてとか。 0 < 00 < 01 < 10 < 11 みたいな? これを木で表せるとか、なんかそーゆーかなり基本的なことばかりです。だから解るけど(汗)。
 
・今週も宿題出たんでせなあかん。んでもなんか最後急いだからか、問題とかがよーわからん(汗)。ってゆーか証明問題とか苦手だなー。むー。……ああっ、全然プログラミングと関係ないっ!(爆) しばらく我慢してねん。
 
・でわまたっ!
透明1ドットイメージ
 
2000/04/25 (Tue)
・ふみ、1時間遅れですー。
 
・んーと、今日は情報処理論の授業。今日はオペレーティングリサーチでやった最適化問題の解き方みたいなのをやりました。曲線の傾きを求めていったりしてしらみつぶしに調べるのとか。あうーなんかよく憶えてない(汗)。
 
・あと、今日のとは直接は関係ないんだけど、教科書に「ヒープ」ってのが載ってました。これはいわゆるヒープ領域と違って、2進木を配列に埋めていくっていうもの。もしかしたら、 STL の std::make_heap() とかと関係あんのかもしんない。これ、 STL の中でも使い道が分かんなくて。今日はこんなとこ(汗)。
 
・でわまたっ!
透明1ドットイメージ
 
2000/04/26 (Wed)
・今日は信号処理論。なんか解説とか思いっきり飛ばしたりしてるんで、2回目だから分かるって部分が(汗)。そろそろ DFT に入るんで、プログラミング開始しようかなー。しかし時間ない(汗)。
 
・今日のお便り。
 
透明1ドットイメージ
透明1ドットイメージ
 はじめまして。  プロパティシート内のプロパティページを小さくしようとしていますが、うまくいきません。ダイアログエディタで小さくしても、実際に表示すると、一定の大きさまで拡大されてしまいます。派生クラスのCPropSheet::OnInitDialogやCPropPage::OnInitDialogでCWnd::SetWindowPos等を使って試行錯誤しましたが、ダメみたい…(T^T)
 VC++初心者なので、こういう処理で当然の処理をやってないのかな(?_?)
 ちなみに、MFCのプロパティシートをモードレスで表示しています。
 よろしくお願いします。m(_ _)m
透明1ドットイメージ
透明1ドットイメージ
 
・うおホントだ、一定サイズ以下にならないです。これ、結論から言うと「仕様」です。プロパティシートってウィンドウズのコモンコントロールのひとつ、つまりあのダイアログとかページとかを全部ウィンドウズが代わりに作って管理してくれているんです。便利な代わりに、色々制約があって、そのひとつが「最小サイズ」。プロパティシートダイアログはあるサイズより小さくならないんです。
 
・これは MSDN の Property Sheets ってページに書いてあるから読んでみてください(「キーワード」に入れればページ出るよん)。ちなみにその最小サイズは 212x114 ダイアログ単位。「ダイアログ単位がなんなのか」ってのはすごーく長い話になるんでここでは割愛(汗)。まーようするに、どうしようもないことってことですな。「絶対に実現しなきゃなんない」ってときには、フツーにダイアログ作ってそこに自前で貼り付けるしか……。
 
・でわまたっ!
透明1ドットイメージ
 
2000/04/27 (Thu)
・んーと、今日は NJK とゆー会社の就職説明会に行ってきました。まーどんな感じだったかっつーことは日記で書くとして、ここではなぜわてがこの会社を希望したのかを書いておきましょう。
 
・わての希望はオージス総研とこの NJK (オージス総研の方は返事なし(泣))。両方に共通することは、ホームページでプログラミングについてのドキュメントを公開してるってこと。これって実は結構すごいことなんですねー。プログラミングって医療と同じで、基本的には閉鎖社会だから、とかく公開せずに内々でってとこが多いと思うんです。んでもここは違う。だから魅かれた、と。
 
・特にオブジェクト指向は、まだかっちりとは方法論が確立されてないから、なおさらドキュメントにしにくいと思うんだよね。んでもこーゆーのしっかりやってる。わてもCodianとかで公開してるから、こーゆーのの難しさとかわかるつもり。こーゆーとこなら、なんてゆーか「上昇志向」でプログラミングできるかな、とか思ったわけですな。
 
・ま、実際に入ってみないと「うぎゃ」とかあるかもしんないから何とも言えないけど(汗)。それに入れるかどうかもわかんないし。ってゆーか入れないよーな気がふつふつと(汗)。
 
・でわまたっ!
透明1ドットイメージ
 
2000/04/28 (Fri)
・今日はお休みでーす。なんかお休みって久しぶり?<だからいいってもんでもないが(汗)。
透明1ドットイメージ
 
2000/04/29 (Sat)
・えーっと、まずアナウンスから。今回の更新でプログラミング辞書の単語ストックが尽きるんだけど……単語募集はもーちっとだけお休みすることにします(汗)。いつまでかってゆーと、とりあえず6月一杯。ってゆーか就職決まるまでってのがホントのとこね。もし決まったら早めに再開するけど、もし決まんなかったら7月一杯まで伸びることに(汗)。あー夏休み入ったら余裕あるから決まってなくても復活できるけどね(やだなそれは……)。
 
・今日辞書のストック分を追加したんだけど、実はケッコーこれがめんどいんだわ。まず一番難しいのが「知らない単語」。これはネットで調べて書くんだけど、基本的にこの辞書は「噛み砕いた解説」をウリにしたいから、わて自身が理解せなあかんわけで、そのためにいろんなサイト見てどーゆーものか触れたこともないものの想像せなあかんわけです。
 
・知ってる単語についても、逆に知ってるだけに詳しく書いちゃったり、他に必要な単語を追加しちゃったりしてえらい量になっちゃったりするんだよね。だから実はかなり大変な作業なんです。んでも辞書って楽しいんだよね、作るの。そー、変な話だけど、辞書作ること自体が面白い(爆)。なんてゆーか、トレーディングカードをコンプリートしてく気分?(全然違う気もする……)。
 
・プログラミングについての単語をあーやって書いてくことで、自分の知識を再確認できるし、それがしっかり網羅されてくってのがうれしいんですね。それに実際、辞書はかぶスタの看板ページになりつつあるし。Codianよりも情報量が多くて、対応してるプログラマーの幅も広くて、インタラクティブ性がある。かぶスタの人気をさらに引き上げてくれそうな予感。だからできるだけ早く復活させたいですねー。
 
・でわまたっ!
透明1ドットイメージ
 
2000/04/30 (Sun)
・今日はお休みだよーん。
 
 
(C)KAB-studio 2000 ALL RIGHTS RESERVED.