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+ が用意してくれている方法を知らないって悲しいなぁ。
まあ現場のおっさんなんだからこんなもんさ。

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

F10

毎日プログラミングは辛い…
てかゼロから作るのって何年ぶりなんだろう…

てなわけで今日はブログを。

ステータスも透けているのが解りやすいようにと。
小ボタンの右寄せは今回はやらないでステータス表示にするつもり。

で、いつまでたってもボタンが追加されないけど理由がある。
F10 をどうしようか迷っていて決まらない。

私のプレイヤーを使っている人なら解っていると思うんだけーが
今までずっと小ボタンはファアンクションキーの並びと同じである。
つまり F10 はユリアルがらの伝統でシングルリピートです。

しかし F10 は知る人ぞ知るシステムキーである。
大抵のアプリは押せばメニュー選択になるはず。
Shift+F10 なら右メニューが出ます。
実はユーザーさんに指摘されるまで知らなかったのであるが…

実は Opera も Shift+F10 なんかに対応していないんだけどさ!
Firefox は見事に対応してくれているねぇ、なんというか。
RealPlayer11 でさえ対応してくれているというのに。

そんなこんなで今回からはそれに従おうと思っている。
すると伝統の「小ボタンはファアンクションキーの並びと同じ」は無理。

うおぉぉぉ困ったぞ!
いったいどうレイアウトすればいいのだ?
無視して伝統を守るか?
何か違う考え方はないか?
んー、伝統どうりのほうが元ユーザーは迷わないはず?
いや違う、コレは Cinema であって YES 90125 では無い!
だあからえっと…

のまま今日までズルズルです。

今コレを書いている秀丸も F10 はタグジャンプなんだけど…
てゆーか IME ON だったら ATOK が変換で横取りするしぃ…
有名なアプリがこんな状況だから余計に迷うんだよなぁ…

お気に入りリンクの消し方、他

お気に入りリンクの消し方。

とりあえず「お気に入りリンク」の項目を右クリックで全部削除。
フォルダペインの上のほうにマウスカーソルをもっていくと上下矢印に変わる。
そのまま掴んで一端下にドラッグ(重要、これをしないと上に動かない)
そうすると上方にドラッグできるようになるのでそのまま一番上でドロップ。

みごとに消えました、ちゃんちゃん。

、、、、、

XP までの詳細表示に復活させる方法。

そうしたい一番親のフォルダを右クリックしてプロパティ。
カスタマイズタブのフォルダの種類で「すべての項目」を選択。
「ドキュメント」とかになっていると撮影日とかになっちゃうよん。
「サブフォルダに適用」にチェックで「OK」

みごとに昔懐かしの詳細表示に、ちゃんちゃん。

、、、、、

後は XP の詳細表示同様になるよう D&D でカラムを並べ替える。
以後の表示順を種類順とかにしたければクリックしてソートしておく。
フォルダオプションを開き表示タブの「フォルダに適用」ボタンを押す。

あぁ、やっと使えるレベルになった。
プログラマは詳細表示かつ種類順でないとやってられんっつーの!

てかパソコンの中身はデジカメ画像だけだと思っているのか Microsoft は?

end of y901

Y901 は本当に終わっていた。
Vista で使い物にならネェ、、、、、、、、、、
むしろ開発終了していて良かった、、、、、、、、、、

v2.1.31 のソースが出てきたのでコレをベースでなら少しは直せるけど、
この Explorer の仕様ではファイルの並び順をどないせっつーの!
もはや名前順以外は消したほうが無難だわな。

それより Vista という OS の考え方とはギャップが大きすぎる。
Vista 用の WMP11 が洗練されすぎていてなんかみじめに感じてしまう。
XP 用とは随分違うんだね、フルスクリーンでのパネルには感動したよ。

話は違うがそういえば codec がどうのとか最近見聞きしなくなった。
再生だけなら VLC か GOM 使えで終わってしまう凄い時代になっちまったし、
つーかもはや MPEG2 か WMV 以外でエンコードする人が信じられないわけで。
まあ FLV や H.264 もあるけど、コレは目的が違う。

しかし…作った本人はあの操作にすっかり慣れきっているんだよなぁ。
とある事情で公開は続けているけど来年までには簡易な代替えに入れ替えるか。
言うまでもなくあまりやる気は無いので簡易で十分かと。
まだコレを使い続けている哀れなユーザーもそれ以上は望んでいないと察する。

Real は完全に無視します、Vista 未対応のようなのでインストールしていないし。
リアルネットワークス、新しいRealPlayerを発表–YouTubeのビデオダウンロードが可能:ニュース – CNET Japan
何がこの会社をそうさせた…

ということで DirectX SDK 最新版をダウンロード。
DX10 って 3D 以外は 9 と同じだから最新に拘らなくてもイイけど一応。
__________

ついでに、SeeMe や Palepoli が何の問題もなく動く事に驚いたよ。
カーネルレベルでの変更らしいのに下位互換性にこんなに拘るとは恐ろしい会社だ。
フリップ 3D も普通に追従するとは、マルチバイト処理もまだイケるようである。

だからといってその「そのために用意してくれた環境」に頼っていると自身が進歩しない。
ソレを補ってしまう開発環境だから腹が立つんだよ今のデルヒャァは!
過去の資産も大事だが下を育てるのという事も提供側は担っているのを解っていない。