Mesoscopic Programming

タコさんプログラミング専門

2012-01-01から1年間の記事一覧

ヌメロンの番組解説が残念過ぎる件

毎回楽しみにしてるヌメロンだが、 相変わらず番組解説の検証がデタラメなので残念だ。特に今日はグランドチャンピオン大会準決勝という重要な試合なのに、 村上VSマリエのマリエの3ターン目のコールで2択に絞られたとかデタラメな解説をしている。普通…

宇宙の中心

宇宙誕生のイメージとして、よくビッグバンの1点から3次元的に膨脹したかのように表現された イラストを目にするために、まるで宇宙に中心が存在するかのように錯覚してしまうのだが、 実際は3次元空間も宇宙誕生と共に誕生したので宇宙には中心がないの…

ファイルビュワー作成日誌 #006:テキストビュワー

概要 テキストビュワーができました。但し、開くときの文字コードチェックが遅いのであとで改良します。 一度開いてしまえば、表示は速いですから。 1文字でも表示できない文字が入ってたらエラーではじいてるんですが、 ファイルサイズがでかいやつは、先…

Programming Tips #033:UTF-8 => Shift-JIS 変換

概要 きのうテキストビュワーのテストしてたら、文字化けするテキストファイルがあったので調べたら文字コードが UTF-8 だった。 そこで変換方法をググって見たが、なかなかそのものずばりのサイトが見つからなかった。 仕方がないから UTF-8 の仕様を調べて…

ファイルビュワー作成日誌 #005:バイナリビュワー

概要 バイナリビュワーができました。ドキュメントウィンドウの中身としてビューウィンドウがある分けですが、 ビューウィンドウの派生クラスとしてファイルビューウィンドウがあって、 ファイルビューウィンドウの派生クラスとしてバイナリビューウィンドウ…

Programming Tips #032:n桁区切り関数

C++

なぜ printf() は数字を区切ってくれないのか? ファイルサイズを表示するのに3桁区切りしたいなと思ってググったのですが、 C++ だとストリーム出力の方は対応してるらしいけど、 書式付文字列関数ではあいかわらずサポートされてないみたいなので自分で作…

ファイルビュワー作成日誌 #004:ファイルブラウザ

概要 ツリービューコントロールでファイルブラウザを作ろうのコーナーです。 世の中いろんなビュワーがあるけれど、ファイル開くのって大抵OSまかせじゃないですか。 別のファイル開くたんびにファイルオープンダイアログが表示されてすごい面倒じゃないで…

ファイルビュワー作成日誌 #003:ウィンドウの分割

概要 メインウィンドウからツールバーとステータスバーを引いた残りのクライアント領域を以下の3つに分割します。 Output(出力画面) TreeView(ブラウザ) Document(ビュワー) 3つのウィンドウを梱包するためのウィンドウとしてコンテナウィンドウを準…

ファイルビュワー作成日誌 #002:メニューなどの追加

本日のメニュー メニュー追加 キーボードアクセラレータ対応 ツールバー追加 ステータスバー追加 プロファイル対応 実行画面と実行ファイルとソースファイル FileView.zip main.h main.cpp App.h App.cpp Window.h Window.cpp メニューの作成 HMENU hTopMenu…

ファイルビュワー作成日誌 #001 : ウィンドウズアプリケーション

はじめに 以前ウィンドウズプログラミング講座などという仰々しいタイトルを付けたもんだから、 敷居が高くなって何も書けない状態が続いてしまったので、ブログタイトルを作成日誌に変更しました。 これで公開ソースに多少バグがあっても大目に見てもらえる…

Tips #031 Vista & DirectShow の MPEG-2 フリーズエラー対策

何とかフリーズ対策できました フィルタ情報およびピン情報から当該メディアが MPEG-2 形式であるかどうか分りました。 しかしピン情報では MP4 も MPEG-2 形式となるみたいでした。 MP4 はサードパーティのデコーダしか対応してないので問題ありません。 問…

Tips #030 DirectShow と Vista と MPEG-2

超難問、DirectShow と Vista で MPEG-2 を再生する方法 いろいろ試しましたがダメでした。 XP では問題ないのに Vista で MPEG-2 ファイルを再生しようとすると必ずフリーズします。 グーグルでいろいろ調査した結果、どうやら Vista から MPEG-2 が標準サ…

Tips #029 DirectShow を使う際の注意点の追記

sal.h が無くてもコンパイルできる方法があった。 sal.h をインクルードしてるのは dsound.h なのだが、 DirectX9 以前の dsound.h ではインクルードしていないのだ。 なので VisualStudio のオプションでインクルードディレクトリの順番を変えて、 DirectX1…

Tips #028 DirectShow を使う際の注意点

DirectShow 構築メモ 初めて DirectShow を使ってみた。 コンパイルエラーになった。 "sal.h" が無いと言われた。 手持ちの SDK を探したが無かった。 グーグルした。 ここにあった。 しかしISOイメージだった。 使用してる PC の DVD が壊れてるので DVD は…

西村ヒロチョが面白すぎる件

昨夜のロケットライブにビーフケーキが出てたのでめちゃくちゃ笑った。 ペペペドミア共和国ネタは何度見ても面白い。 それで満足したので次のピン芸人には特に期待してなかった。 ところがこの西村ヒロチョなるピン芸人が、ビーフケーキの存在が霞んでしまう…

Tips #027 WM_SETCURSOR イベントの発生タイミングに対する不満

憤りメモ マウスカーソルが移動したときにしか WM_SETCURSOR が発生しないのは貧弱すぎるのではないか。 何故ならば、キーボードの状態が変化したときにもカーソル形状を変更したいからだ。 かと言って、キーボードイベントはフォーカス所有者にしか来ないし…

Tips #026 キャレットとかな漢字変換ウィンドウについて

メモ テキストビュワーを作っているんですが、 ウィンドウズ標準のエディットコントロールでわ余りに遅すぎだし、機能的にも不便すぎるので自分で作ってまんねん。 でもまだかなり時間がかかりそうなので、とりあえず かな漢字変換ウィンドウの位置をキャレ…

はるかぜちゃん事件について

何やら、はるかぜちゃんが殺人予告を受けてから大変なことになってるようだ。 子役俳優としてのはるかぜちゃんは知らないが、少なくともバラエティタレントとしてのはるかぜちゃんの才能は抜きんでていると思う。 可愛いだけの子役はたくさんいるが、バラエ…

Tips #025 キャレットの表示がむずい

キャレット表示処理メモ 私はいま、異なる複数の子ウィンドウにキャレットを表示させようとして、ガッツリはまってしまいました。 何故かしら1つのウィンドウは表示されるのに、もう1つのウィンドウにはキャレットが表示されないのです。 何でかな? で、…

はるかぜちゃん殺人予告事件

NHKでいじめ番組を見たついでにツイッターで「いじめ」を検索したら、はるかぜちゃんが殺人予告を受けている件がヒットした。 いじめと殺人予告は別物だという気もするが、どこかでつながっているのかも。 いじめ問題は深刻だが戦争と同じで無くなる気が…

Tips #024 ウィンドウサイズの限界値は SHRT_MAX

ご用心 まさか今どき16ビットが限界値とわ驚いたわ。 何がってウィンドウのサイズでがんす。 ドキュメントウィンドウの中身はテキストだったり、イメージだったり、3Dだったりするので、 ビューウィンドウをドキュメントウィンドウの子ウィンドウにして、 …

Tips #023 WM_CREATE でやって良いこと悪いこと

要注意! WM_CREATE イベント中にやって良いことと悪いことがある。 普通、WM_CREATE でやることと言えばウィンドウの初期化である。 しかしながら、ここでウィンドウの状態を変えるような初期化作業を行ってはならない。 なぜならば、まだ初期化が終わって…

Tips #022 ウィンドウ最大化前のウィンドウサイズ

メモです ウィンドウを最大化した状態で終了したときの元のウィンドウサイズの取得方法について、まだ書いてなかったようなので忘れないように書いときます。 GetWindowPlacement() という目的に合致した関数がありまんた。 以下はプロファイルに保存するた…

Tips #021 タブコントロールの TCN_SELCHANGE 通知イベント

メモ タブコントロールに TCM_SETCURSEL を送っても TCN_SELCHANGE 通知は発生しないので要注意! ヘルプが英語なのでちゃんと書いてあるのに気付かんかったわい。以上です。

Tips #020 原因不明のバグ

プログラミングをしていると良く原因不明のバグに遭遇する。 しかしこの世に原因不明のバグなど存在しない。 つまりバグの原因を徹底的に追究するかしないかの違いだけだ。 私はさっき、またしても原因不明のバグに遭遇した。 しかしながら徹底的な原因追求…

Tips #019 マウスホイールは誰のもの?

マウスの真ん中のダイヤルをぐりぐりすると WM_MOUSEWHEEL メッセージが送られるわけだが、 それがフォーカス所有者あてなのが気に入らない。 だってさ、マウスボタンイベントは普通マウスカーソルの位置にあるウィンドウに来るじゃん。 だったらさ、マウス…

Tips #018 デストラクタ中の仮想関数

C++

仮想関数は奥が深い。 仮想関数はどこでも仮想だと思ったら大間違いだ。 以下のプログラムを見て欲しい。 class A { virtual ~A() { foo2(); } virtual void foo() { printf( "class A :: foo()\n" ); } void foo2() { foo(); } }; class B : public A { voi…

Tips #017 書式付デバッガ出力

不具合原因を調査するのにデバッガ出力はかかせない。 ウィンドウズには OutputDebugString() という便利な関数があるが、 変数の内容を見たいのに文字列しか受け付けないのはいただけない。 いちいち文字列変数を用意してたらめんどくさくて本末転倒なので…

もやもやはてなブログ

はてなブログはベータ版だからしょうがないのか。 カテゴリーの整理しようと思ったら、カテゴリー編集機能が何もないことに気がついた。 ダイアリーの方は確かあったと思うから、そのうちブログの方も追加されるかも。 あと記事の管理で、次のページはあるが…

Numer0n Programming Tips #1 シャッフル後の分析データにスラッシュの効果を反映させる

検証プログラムなんだけど、コンピュータと対戦しててバグを発見した。 シャッフルしたら分析データからスラッシュの効果が消えちゃった。 シャッフルはチェンジと違い、スラッシュナンバーは継続して有効なはずなのにだ。 修正するにはシャッフル後の正解候…