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 が無償で欲しいよぉ!

WPF で WMP

チュートリアル : Windows Presentation Foundation での ActiveX コントロールのホスト

ココを見ている人の大半は興味があると思うんでリンク。
てゆーか試しているんだけーが上手くいかない…
上手くいったらなんか書くよ。

C# はもっと早くやっておくべきだったかなぁ?
とはいえ WindowsForm さえ昔の話になりそうな勢いだし。

それどころか IronPython で WPF が使えてしまうようだし…
これから .NET を学ぼうとしている人はいったい何を選べと。

Ruby.NETプロジェクトのリーダーがMSを支持 (1/2) – ITmedia エンタープライズ

コッチはなんだかよく解らないコトになっています。
どっちでもいいから進んでくれと願う。

そんなこんなで昨日は IronPython と XAML の本を探しに近場の本屋に。
一つも無い…来週は名駅の十一階に行ってくるか。

てか雑誌コーナーを見て吹いた、○トランって…
この会社じゃ新雑誌企画会議でこんなアイデアしか出ないのかなぁ。
もはや CMAGAZINE の復刊は絶望的だと感じた今日この頃であった。

WPF に挑戦

よし、WPF に挑戦するぞと。
そういえば .NET 3.5 ならグラス効果をマネージしているのかな?

WPF アプリケーションへのグラス フレームの拡張

アンマネージのままなのね…
でもこれ v8.0 のヘルプだからもっと探せば見つかるかなぁ?

つーか間違っているぞこのコード。
System.Drawing 名前空間は WPF から参照できないヤン!

まあそりゃ System.Drawing は GDI+ のラッパーだから当然なのだが。
WPF は DirectX を直接呼んでいるっぽいし。

まあいいや、チト書き換えて実験しよう。

using System.Runtime.InteropServices;
using System.Windows.Interop;
をお忘れ無く。

つーか System.Windows.Interop; がデフォで付かないって何故?
これが無いと WPF で作成したウインドに対し何もできんわな。

ところで VS2008 ののコピペがとってもインテリジェンスなのに感動した。
全自動でインデントを合わせてくれるじゃん、後で直す必要が無い。
C# 編集では前からなの?C++ と HTML しか使わなかったのでよく解らない。

しかし宣言ミスとかでミミズマークが付く機能はリアルタイム監視じゃないのね。
Visual Web Developer はリアルタイムで指摘してくれるので調子が狂う。

例の文字列表示の発光効果は Label のプロパティで簡単に作れる。
BitmapEffect を OuterGlowBitmapEffect にして色を選ぶだけ。
描写負荷は軽くなっているのかな?実験してみないとなんともいえない。

mainWindowSrc.CompositionTarget.BackgroundColor = Color.FromArgb(0, 0, 0, 0);

の部分がどうしても気になるんだが。
SDK の時は真っ黒を指定なんだが、これじゃ完全に透明だ。

wpf01.png

ほらやっぱり…
てか本当に完全な透明だ、動かしたらキチンと背景どおりに変わる、なんだこりゃ。
試しにアルファ指定を 255 にしたら半透過部分も普通に黒くなってしまう。
むー、WPF は今までと全然違う考え方でウインドを作る必要がありそうだ。

なんか Cinema を作って勉強したことが全部無駄になってしまいそう…

Flash 再生

VS2008 の使い勝手を調べるのに試しに Flash 再生をば。
新規でまず普通に Win32プロジェクトを適当な名前で作り stdafx.h に…

なんじゃこの targetver.h っつーのは、分離する必要があるのか?
ココを弄くるとリビルドしなきゃいけないのでややこしくなるだけだと思うが。
まあそれはよくて。

#pragma comment(lib,”Atl.lib”)
// TODO: プログラムに必要な追加ヘッダーをここで参照してください。
#include <atlbase.h>
#import <C:\\Windows\\System32\\Macromed\\Flash\\Flash9d.ocx> named_guids raw_interfaces_only

を追加、ocx の名前は私はこうなっていたけどどうなんだろう?

と書いていたトコで Ctrl+C が急にまったく使えなくなってしまい困った。
再起動しようとすると更新アイコンが、こんなにコッソリ更新すんなボケ!
VS2008 では使えなくなったかと思ったヤン、まあそれはよくて。

ソース先頭にお約束を記述
using namespace ShockwaveFlashObjects;

ShockwaveFlash オブジェクトのポインタを用意しておく。
IShockwaveFlash *pSwf;

んでもって下記のコードを追加してビルド、完成。
swf ファイルは自分で用意してパス指定してね。

atl01

だけどコレだけじゃ atl が使えないので
C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.ATL
に atl90.dll があるので生成された exe と同じフォルダに放り込む。
それだけで swf は再生可能。

atl02

コードギャーは気にしないでくだされ、手元にコレしか無かっただけです。

flv の再生は読み込んだ swf から ActionScript とかで読み込んで再生させる。
というわけで Flash 作成ツールが必要なのね、、、、、