月別アーカイブ: 2008年3月

class の static

Google アドすげぇ。
気がついたら現在のトップではレンタルサーバー関連ばかりになった。
そういえば Ubuntu ネタやっていた時は Linux ばかりだったなぁ。

これじゃいかん!プログラミングネタやらなきゃ。
つーことで、C++ の class で何を今更な話だけど。

20080316.JPG

にて普通に 3 と出力される。

うっ!知らなかった、class で static ってこうやって使うんだ。
コレならインスタンスを生成しなくてもクラスが使えるんですね。

でも定数しか参照不可でオーバーライドが出来るわけでもない。
名前空間と何一つ変わらない使い方しか不可能なのかな?

でも C# は普通にクラス内変数が参照可能だよな。
なんかイイ方法があるかもしれん。
上手くいけば C++ と C# で大半のコードが共通にできる。
現在使っている難解な継承よりスマートな部品が作れるかも。
よーし!

ということで今日は色々やってみた。

何時間かして気がついた、C# の変数とは実はオブジェクトだった…
だから static 経由でも入れ物として成り立つのね、あーあ。
一応 C++/CLI を少しやったんだからンナこと早く気がつけよ。
JAVA や C# って上手く作られているんだなぁ。

ということで今日もこんな勉強で無駄に過ごしてしまいました。
こんなことしてるよりいいかげんにサイトの更新をしなきゃ…

Aero の TextOut

唐突に気がついたのだが…
以前 WPF の描写について

※ボタンを押して文字を描写した
※アプリの上に他のウインドを被せた
※そのウインドをどかしたら文字が消えていた

なんて初心者が必ず迷う事柄はもう二度と起こらないんだし。

と書いてしまったが、よく考えたら Aero 自体も DirectX 描写だ。
もしかして?と思って実験。

20080309.JPG

を Aero で動かして左クリックで文字を描写して上にウインドを被せる。
どかしたら…やっぱりコレでは描写が消えなくなっていたのね。

ウインドをリサイズすると当然のように消えるのは変わっていない。
正確に書くとリサイズでは WM_PAINT が飛んでくる。

WPF は何をしようが消えない、うーややこしいぞ。
つーか WPF では Paint イベントなんて定義が無いので消えたら困る。

文字を表示する
かの赤坂氏の解説も今は通じなくなってしまっているわな。
なんか何を今更という感じですが Vista って本当に困った OS です。

Web との差

ところで昨日リンクしたサーバーは PHP が使えないのね。
MySQL も、まあ普通に考えればそりゃそうだろう…

ようするに WordPress が使えないわけで。
丸ごと引っ越すのはムリだ、使うにしてもココと併用になる。
ちなみにココは

さくらインターネット

のスタンダードプランで運営している。
負荷状態や通信速度なんかの参考にでもしてくれい。

さてと。

ASP.NET も使う機会が出来そうだけどまず WPF をやらねば。
そろそろ図形に挑戦しようと思ったけどもう少しテキスト処理を。
段落を生成するには FlowDocument コントロールが必要らしい。

20080304.JPG

Bold 化をコードで書くと違和感があったが XAML で書くとピン!とくる。
あぁそういうわけね、XML で書くという方向を優先した結果なわけだと。
本当は <b></b >みたくしたかったけど色々あったてか。

ただフォーマット済みテキストのタグが何故 Run なのだろう?

それより驚きなのが三行目だ。
Web 屋には「何が凄いの?」なんだろうけどソフト屋は衝撃ですよ。
コレと同じ表現を C++ でなんてどんなロジックを組めばいいんだよ?

よく考えたら Web にはハイパーリンクが普通にテキストに含まれるわけで。
Web と普通のソフトウエアとのインターフェイスってこんなに差があったんだ!

それの融合をこんな形で実現するとは恐れ入った。
どういう場合の時にコレを使うというのは別の話。

C++ の \n やデルヒャァの #13#10 のように簡単な改行はムリ?

Windows徹底理解

WPF も魅力なのだが現行アプリもやらねば。
とりあえず今年は C++ をメインに少しづつ .NET でいく。

Windows API の本で役に立った本も紹介しておく。

2004年発行のムックだけど今でもたまに手に取っている。
やっぱりプレミアが…って定価 ¥2095 なのでそんなに付いていない。

コレを買ったのは BCC で DLL の作り方が書いてあったから。
VC++ Exp が無償で手に入る時代に今更 BCC は勧めませんが。
当時は C++ のコンパイルを BCC でやっていたのでまあ。

まあそれはそれで役に立ったわけですが、この本は凄かった。
その名の通り Windows はどうやって動いているかで始まっている。

NTFS の仕組みとか IO とか割り込みとかキューとか etc…
それも簡潔ながら図解付きで解りやすく解説されている。
実はなんとなくしか解っていなかったが本当に勉強になった。

そして基本ウインドの項目は衝撃だった。
アプリケーションは自分でメッセージをキューに取りに行っているのね。

while (GetMessage(&msg, NULL, 0, 0))

の部分で、あぁだからこの関数が必要なんだと。
そんなことも知らずにプログラミングをしていた自分を恥じた。
たったソレだけのことを知った事による影響は大きかった。

それを解説してくれる本にそれまで出会わなかった事が不思議だ。
まあそれを隠しているデルヒャァ屋だったというのもあるが。
WPF なんかも隠す方向なんだよねぇ、チト気になる。

脱線はこれくらいにして。
ファイルアクセスやメモリ管理なんかの解説も当然あるわけで。
これらもなんとなくしか解っていなかった事をこの本で改めて知った。

実は UNICODE アプリが作れるようになったのもこの本のおかげだ。
そしてフォントはふぉんとに奥が深かった(我ながらつまらん…)

ようするに API の解説ではなく Windows の解説本なのだが、
どうやって Windows が動いているのかを知って得たモノは大きい。
API というか SDK でプログラムをしようという人は必見。

Vista が出た時代だけど API 関数はほぼ同一なので問題無し。
てゆーか本当に基本の基本しか書いていない、それがよい。

でもさすがに古いムックなので代替があればイイんだけど…
見つけたらまた紹介するね。