VS2008 すげぇ

Visual Studio 2008 Professional をインストール。

スッゲェ!

何がスゲェかってインストールするのに一時間以上掛かった。

Vista の時よか長い、こんなに待たされたのも初めてだ。
更に MSDN のインストールに三十分、恐るべし。
そのインストール最中に自動更新が…勘弁してくれ。

それにまず箱の開け方が解らなかった…

まあ終わってしまえばそれはエエわな、さて試すか。
なんか起動が恐ろしく遅くなったような…

あれ?2005 は残るのね。
残す必要がイマイチ不明なんだが保険にはなる。

Cinema のソリューションを変換してビルドしてみる。

wp64

…64bit 互換の警告は無くなるんかい。
まあ互換用ヘルパー関数は使い物にならなかったので結果そうしたと考える。
警告が出ないよう一生懸命コーディングした努力が無駄になった。

上に他のウインドが被さった状態でデバッグ終了すると被さっていた領域が更新されない問題は直っている。
一番気になっていたことなのでソレだけで嬉しい。

つーか Visual Web Developer はゴロッと変わっている。
プロパティの内容が全然違う、逆にインラインスタイルはどうやるの?
PHP を強引に GUI 編集するのには「エンコード付き HTML エディタ」に変更しなきゃ駄目みたい。

WPF は…C++ からは使えないんかい!
C++ から .NET を使う人はやっぱりいなかったということなのだろうか?
まあ以前から Web 関連が無かったのだから当然かも。

とりあえず軽く試して気になったこと、細かいところは次回。

Ctrl+I

色々やってノートの Ubuntu は電源が切れるようになった。
沢山弄くったのでいったいどの方法で切れるようになったか解らない…
音はまだならない…

つーことで今日は HDD を買ってきてメインマシンに突っ込もう。
キーボードも欲しいなぁ、アレの付属キーボードを使っているけどイマイチだし。
と思っていたんだけど他の用事でなーんもできなかったわい。

つーかこんなことやっていないで開発しなきゃいかんだろ俺!
明日から当面は禁 Linux とします。

そういえば VS2008 を買わなきゃ、忘れていた。
std か pro か、うーまだ決まらないわな。

てなわけで MS のサイトを見て廻る。
げっ、こんなのがあったんかい。

MSDN Online Event – 定期コンテンツ – Visual Studio 2005 Tips

Ctrl+I でインクリメンタル検索…試したらメチャクチャ便利だ!
えぇ、知りませんでした、ずっと Ctrl+F を使っていました。
コード定義ウィンドウ…確認したいことはありませんか?って毎度じゃい!
えぇ、もちろんずっと右メニューから定義に移動をしていました。

私は今までいったい何をやってきたのでしょう。
たまには開発元のサイトは見てみるもんだ。

改造はつまらない

Cinema も飽きたなぁ…

そう思って久々に Blog でも改造をしようと考えた。
Word Press のテーマを漁って試してみたりしたんだが。
なんか変なので色々と CSS を弄くってみたんだが。

…つまらん。

どうやら今の私は他人が作ったものを改造するのが性に合わないようだ。
サイトがあるのに Blog を書く理由は覚え書きが楽だからという理由だし。
別に改造して楽しみたいという理由で使っているわけでもないし。

そういえば Opera のヘビーユーザーの Blog を観覧していて毎回思う。
そこまで改造をするのなら自力でオンラインソフトでも作ればいいのに、と。
個人オンラインソフトが廃れてきている現実は置いておいて…

十代の頃は若くて貧乏なりにオーディオなんかを弄くっていた。
二十代の頃は凄い借金をしてまで車を弄くって遊んでいた。
なのに何故だろう?今は現実世界を含めて改造なんてほとんどしなくなった。

私の Opera はほぼノーマルなのはご存じかと。
標準機能が十分便利でレンダリングが爆即だから選んでいるだけで。

ちなみに Vista の Explorer はプレビュー表示に戻した。
ファイルの移動やアーカイブにはフリーのファイラーを使えばいいや、と。
そうやって Microsoft の思惑どおりに使ったほうが便利だと気がついた。
PDF なんかも内容表示できるんだね、知らなかったよ。

自分流に改造するっていうとカッコよく感じるんだけーが、
それは逆に作り手側及び提供者側の考慮を台無しにしかねない。
便利な機能やサービスを知らないまま使っているなんて悲しいよ。
ソレを思惑とか押しつけと考えるかどうかは人それぞれなんだが。

は、どうでもよくて。

改造するより自分でゼロからモノを作ったほうが楽しいよ。
と、一言書きたかっただけなのにこんなに長くなってもーた…

ま、改造ネタのほうが多分アクセスは稼げるんだけどね。

そうそう、今日本屋さんで Ruby の本を立ち読みしていたのだが。
隣にいた若いニーチャンが C# Exp 入門本を散々悩んで買っていった。
なんかほほえましかった、私も歳をとったもんだ。

WS_EX_COMPOSITED は使えない

あけおめ(一応)

あー!なんじゃこの拡張スタイルはっつーの。
Wバッファリングを自動でやってくれるスタイルなんだが。
Aero で使ってみたら問題が無かったので当ててみたら…

クラシック表示
VMR の動画がまったく見えない。
他の部分が余計にチラツク

XP
アルファブレンドを掛けた GDI+ 表示がまったく見えない。
VMR の動画もやっぱりまったく見えない。
その見えない動画の上ではメニューさえも消える…

そういえば自力でやったら似たようになったのでヤメたんだっけ…
とにかく GDI+ や DirectX を使う人は絶対にこのスタイルを含めないで。

とにかくこの環境全部のつじつまを合わせると方法が限定されて困るわな。

???の人に簡単な解説をすると。

XP までの画面表示は1つの画面領域を全部のアプリが共有していました。
だからウインドを移動すると下のウインドが真っ白になっているのが見える。
ソレ毎に WM_PAINT が飛んできて、せっせと再描写が行われます。

しかしビデオカードが大半を処理してくれるので気にならなかった。
GetDC 関数で得られる HDC は実は完全に見せかけです。

Vista のクラシック表示は同じ方法で描写されます。
しかし GDI 処理が全部ソフトウエア処理に変更になりました。
そのため描写処理は目を覆いたくなるくらい遅くなってしまいました。

Vista を重いと言う人の大半はコレを言っているような…
クラシック表示のほうが軽いって考える思いこみって怖いね。

Aero 環境は Desktop Window Manager (DWM) が一括管理します。
アプリケーションごとに画面領域を本当に確保しておき合成して描写します。
おかげで背景のウインドさえスケスケに見えるなんてワザが可能。

と、聞いただけでは「重くなりそう…」と感じるのですが
その仕組みのおかげで上に被さっているウインドが移動しただけで
WM_PAINT が飛んできて再描写なんて事は無くなってしまいました。
トータルで描写処理が軽くなっています、頭がいい人が考えたのね。

Aero で表示がおかしくなるアプリは WM_PAINT の処理がおかしい。
○isual Studio とか ○onoha とか。

おまけに Vista ではオーバーレイが廃止されている。
だから動画のスクリーンショットも普通に可能になってもーた。
つーことで Cinema も VMR というワケワカなモンに移行したわけで。

とにかく。
描写処理が Aero、クラシック表示、XP で全部違うのよ。
従来の方法で描写しているかぎりは何も問題がないわけですが、
DirectX や GDI+ でアルファブレンドを使うとこうなってしまう。
両方使っている Cinema は…さて、色々試して勉強だ。

正月からこんなネタ…

アルファブレンドの制御

クラシックてか Windows 2000 スタイルでの動作チェック。

シークバーがチラツキすぎる…だめだこりゃ。

まあWバッファリングが上手くいかんのでチラツクのは解っているんだが。
アルファを掛けているとバッファの転送で背景が消えないんで一度フラッシュしてるし。
クラシック表示だと露骨に見えるようになるのか、コレは困った。

なんとかならんかとあーでもねぇこーでもねぇとやって今日が終わるよぉ!
InvalidateRect の第三引数を TRUE にすれば普通なら消えるはずなのに…
以前の描写部分を転送前に消す、もしくは転送したら消えるようにするには…
いくら探しても古くさい情報しか見つからない!方法は絶対にあるはずだ!

GDIPlus に関する情報の少なさは悲しいね。
C++ で行う情報は皆無に近いので C# で探して自力変換するしかないし。
…それって逆だろ!と憤りを感じてもしょーがない。
まあ他言語からの変換なんて元デルヒャァユーザーはいつものことだったし。

半日探してやっとこんなのを見つけた。

方法 : 複合モードを使用してアルファ ブレンドを制御する

んーブレンド制御を行ったら透過部分も塗りつぶしにならんかな?
とも思ったけどやってみにゃ解らない、藁にもすがる気持ちでやってみる。
まあつまり

g.Clear(Color::Black); //チラつくけど背景消去方法が他にない

とやっていたトコを

g.SetCompositingMode(Gdiplus::CompositingModeSourceCopy);

に書き換えるだけなんだが。

さてどうなるか…あっさり解決…
せっかく GDI+ が用意してくれている方法を知らないって悲しいなぁ。
まあ現場のおっさんなんだからこんなもんさ。

そんなこんなで今日も進まない。