Programming」カテゴリーアーカイブ

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 関数はほぼ同一なので問題無し。
てゆーか本当に基本の基本しか書いていない、それがよい。

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

WPF で動画プレイヤー

2/18 にメディアプレイヤー貼り付けなんてやろうとしたが
もっと恐ろしく単純な動画再生方法があった。

普通にプロジェクトを作って Window の AllowDrop を true。

MediaElement っつーのを貼り付ける。

XAML の Window 要素の中で Drop=”Window_Drop” イベントハンドラ追加。

そのハンドラで

dshow.JPG

以上でドラッグ&ドロップで動画再生するプレイヤー完成。
なんじゃこりゃ!簡単なんてレベルじゃねーぞこのやろう。

でも何で再生している?軽く調べてみる。
音楽を再生しても WMP のビジュアライゼーションは出ない。
でもコーデックによっては ffdshow をしっかり呼び出す。
ので生 DirectShow みたい。

再生制御も MediaElement メソッドで賄える。
ここまで簡単にしないでくれよ、商売あがったりだ。

.NETのソース

Visual Studio 2008で見る.NET Frameworkのソースコード ? @IT

.NET Framework って C# で作っているのか、へぇ?。
なんて勘違いしそうだ、あくまでクラスライブラリだけだよね。

まあ仮装マシン自体のソースなんか見たって何の参考にもならないが。

デルヒャァの Pro 版以上には VCL のソースが含まれている。
コレは本当に役に立った、つーか沢山パクらせてもらった。
検索で見つかるコードよりはるかに正確で簡潔なコードがそこにあった。
Palepoli の文字列変換なんてソレを見なければまず作れなかった。

と言っても組み込み関数の場合がほとんどである。
組み込み関数をちょこっとだけ拡張したくなることが結構あるのよ。
フォームやコントロールのソースコードは別に参考にならなかった。

一番参考になったのは FileCtrl.pas である。
ファイル操作はどう行えばよいのかたっぷり真似した。
もしくは一部の関数だけ抜き出してサイズ削減とかしたり…

C# では変換等は関数でなくメソッドで行うわけで。
はたしてソースを見たところで参考になるかどうか疑問いっぱい。
とはいえまだ C# は勉強中の段階だからなんともいえないが。

とりあえずヤルかもしれないので覚え書きと。

しかし丸ごとダウンロードの方法なんかこんな所に書いていいのか?
某雑誌臭くて…ってそういえば同じ会社だったわココ。

ところで昨日買った本って WPF 開発者著本の翻訳なんだね。
だから全体像を上手くまとめているなぁと感じたわけだ。
まだ序章しか読んでいないがなんか感銘したよ。
リファレンスではなく「概念」と言い切っているのが開発者らしくて好き。

TextOut

さて、鼻風邪も退治したし WPF の勉強再開。
コントロールを貼り付けて遊ぶのもいいけどまず基本を。

TextOut API や DrawString みたいな文字表示はどうやるの?
Label コントロールでグローを掛けるのもいいけど基本は大事だ。

手持ちのこの本に書いていた。

β 時代に書かれたムックだからオススメというわけではないですけど
Vista の特性を生かしたプログラムを書きたいなら最強のムックです。

しかしコレを読めば Vista という OS とは何なのかが理解できる。
XP までの Windows と Vista とはいったい何が違うのかすべて書いてある。
Grass 効果ばかりが Vista ではないのだよ、良くなった部分は沢山ある。
XP の正常進化だと思って使うと完全に裏切られるけどさ。

だからこういう本をもっと出せよクソフトバンク!
こういう有用な記事が書けるライターを沢山抱えている会社だというのに
能なしライターだけで賄える○トランなんか復刊してんじゃねーよボケ。

まあ実際に Vista を使う最大の理由は間違いなく .NET だね。
WinFX は失敗ではなかった、でも一般に理解されるのはまだ先だろう。
コレを最大限に生かしたアプリが出そろうまでまだ時間が掛かる。

脱線はこれくらいにして。
Grid 要素直下に TextBrock を入れるだけで文字は表示できるらしい。

<TextBlock FontSize=”36pt”>はろぉWPF</TextBlock>

おぉ!デザインビューもシンクロして文字が表示されるヤン!
早速ビルドして実行。

h_wpf

おぉこんなに簡単に…ってあれ?
こういうのって WM_PAINT イベントハンドラに記述しなくてもいいの?
Label のようにリソースではないし…サーフェスとして保持なのかな?

WM_PAINT を気にしなくてイイようになったのならトンデモナイ進化だ。
うー今までの考え方が全然通用しないぞコノヤロウ!

今はまだこんなレベル…

新ANSI C言語辞典

昨日まで強烈な鼻風邪で死んでいました。
つーことでプログラミングはしていない、のでネタは無い。
六万円の元をとらなきゃいけないというのに…

Microsoft、学生に開発ツールを無償提供 – ITmedia エンタープライズ

大学生の皆さんには大バーゲンだなぁ。
多分専門学生に ASP.NET の教育をさせるもくろみなんでしょうね。
でもソッチ方面はもはやスタンダードになった LAMP を勉強したほうが得かと…

そんな手には乗らないぞ!と C/C++ ネイティブを作るのも又一行。
しかし大半の人は挫折するのが目に見えているわけで…
これから初めても専門用語を覚えた頃には社会人かも…

という方々の為に一冊紹介

この本はプログラミング系サイトでよく見かけると思います。
実は自分はプログラミングを始めた頃になんとなく買ったわけですが、
あまりの濃い内容に圧倒されしばらく眠っていました。

それからしばらくして Pascal から C++ へと環境移行した。
その時改めてパラパラとめくって衝撃を受けてしまった。
知りたかった事が一つ残らず書いてある、その先まで書いてある!
ライブラリ関数の実装例までが見事に書いてある、恐るべし。

それからしばらくの間単行本がわりに持ち歩いていたくらいです。

何より嬉しいのは 18.8 x 12.8 x 3 cm という小さなサイズ。
そしてほとんどが文字だけという徹底的に解説を詰め込んだ内容。
これなら鞄に難なく入る。

いつも思うのだがプログラミングの本は何故絵本みたいなのばっかなの?
画像なんかいらないし老眼を前提としか思えない文字のサイズは読みにくい。
とにかく神の無駄遣いだし、ページをまたがる内容は本として失格だし。

というか「持ち歩きたいんだよ俺は!」と声を大にして言いたい。
本を意図的に厚くするためにそうしているとしか思えない。

脱線はこのくらいにして。
本当にこの本は持っておいて損をしない内容です。
多分初心者の方々は私と同様に当分眠ってしまうかもしれないほど濃いです。

最後に、オジサンも Expression Studio が無償で欲しいよぉ!