2009年6月 Archives

wxWidgets メモ

| No Comments | No TrackBacks

wxDialog を継承して作ったウィンドウ(ダイアログ)には EVT_PAINT が飛んでこない。モーダルウィンドウが欲しくて wxDialog を継承して作ったんだけど、微妙に困ってしまった(^^ゞ

まぁ、SDK の CreateDialog で作ったときも WM_PAINT は飛んでこないので、Windows の仕様なんだとは思うけど、SDK の場合は Subclass 化してやれば回避(?)は出来るんだけどなぁ。

wxWidgets で Subclass 化ってどうやるんだろう?

結局 EVT_PAINT を利用しないで描画するようにしたけど、どうやるのが正しいんだろうなぁ。

wxWidgets は楽しいです。今、仕事で作るツールはほとんどこのフレームワークを使って作っています。

その中で wxDirPickerCtrl というクラスがあるのですが、ディレクトリ入力用のテキストボックスと参照ボタンがセットになっているのでものすごく便利です。

ところが普通に配置すると、参照ボタンのラベル名が Browse になってしまってちょっと悲しい。ドキュメントを見た感じだと変更方法は乗っておらず、検索してみたら海外のサイトで「'Browse'をハードコーディングしているのはまずくね?」というようなやりとりがあるだけでした。(もっと探せばあったかもしれないけど、途中であきらめました)

パッチでも当てようかな~と思ってソースを眺めていたら…ボタンコントロールのクラスを取得して変更しちゃえばいいんじゃね?ということに気づいて、やってみたら変更できましたよ。

wxDirPickerCtrl *p = new wxDirPickerCtrl(
  親のコントロール,
  wxID_ANY,
  ディフォルトパス,
  説明 );
p->GetPickerCtrl()->SetLabel( wxT("参照") );

こんな感じで。ちなみに、wxFilePickerCtrl() も同じように出来ます。

GetPickerCtrl() はドキュメントに載っていないメソッドなので、そのうちなくなるかもしれないけど、2.8.9 では残っていました。

でも、wxWidgets はあまり流行ってくれないなぁ。MFC より楽しいのにw

日本語ドキュメントが少ないのも原因なのかな?

ソースコード色づけ

| No Comments | No TrackBacks

ソースコードなどを blog にアップロードする場合、体裁を整えたくていろいろと調べていたのですが、そのまんまJustBlogでsyntaxhighlighterを使うという投稿がありました(^^ゞ

タイプリストで javascript を実行するので、右下にゴミ見たいのが残ってしまうのが残念だけど、これで多少は見やすくなったかな?

しかし、JustBlog って、カスタム CSS とか使わないと、タグに何の装飾してくれないんだなぁ。知らなかったよ。ほかの blog システムもそういうものなのかな?

php失敗談その1

| No Comments | No TrackBacks

何気なくウェブを見ていたら、各言語におけるtrue/falseまとめというページがあったので、眺めていたら

PHP は複雑。以下のものが偽となり、これら以外はすべて真となる。
<snip>
空の文字列、 および文字列の "0"

…これにはめっちゃはまりましたよ!原因がわからず半日くらい悩んだかなぁ。

if ( $hoge == false ) { }

と書いていたのがさらに混迷を深めてしまって…結局 '0' も偽になることに気づいて、php には === という演算子があることに気づいてなんとか修正できましたけど、このときはかなり冷や汗をかいたなぁ。

ところで、php とは関係ないのですが

意見が分かれそうなところですが、個人的にはNULLを偽値として使用するは好きじゃないです。

私は未だに C/C++ における以下の表記になれることが出来ません(^^ゞ

if ( !strcmp( 文字列変数, "比較文字列" ) ) {/*文字列が等しい時の処理*/}

なんか見るたびにうずうずとしたものが(笑)

ソースコードに色づけ

| No Comments | No TrackBacks

VISTA SP2 メモ

| No Comments | No TrackBacks

VISTA SP2 が出たのであててみました。別段何も起きずに終了したのですが、ドキュメントを読んでいておもしろい機能追加があったので、それをメモ。

  • compcln.exe
    ServicePack クリーンアップツールというものらしい。SP2 がアンインストール出来なくなるけど、その分、HDD の容量が空くみたいです。
    ノートパソコンなどの HDD 容量が少ない機種では便利かも。というかデスクトップだけど実行してしまった(笑)

会社の環境で NOD32 を 3.0 にしたんだけど、SP2 と同時に行ったら Windows Live Messenger が起動しなくなってしまった…はて、どっちが原因だろう(^^ゞ