Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

WPFの感動

WPFでコントロールの管理がUIElementで統一的な管理が可能になりました。
コントロール同士のネスト関係も従来のコンテナーの概念でなく、シンプルなネスト概念で記述可能になりました。
同時に,位置とサイズを保持するインスタンスが変わったようです。いままでは、
   txtbox.height=xx;textbox.width =xx; textbox.top=xx;textbox.left=xx;
のように個々のコントロールが LocationとSizeのプロパティを持つ仕組みだったのが、親側(?)が個々のコントロールの位置を保持するようになったのですね。
コントロール部品の性質/役割から見るとスッキリした分類になったと思います。ここまでプロパティ分類を換えたのは英断ですよね。
 同時に、ClientWindowの再描画という発想が無くなってます。GDI/GDI++とは別物になるので、UIロジックは書き直しになりますね。
 旧来からの人たちの言い分が聞こえて来そうです。「過去のソースとの互換性がない。使えない。.netのUIに馴染めかけたのに又、振り出しか。」
 我々の仕事のこの人たちに説明することも含まれるんですよね。今まで以上にこのほうが難しくなったと感じてます。

コロンブスの卵で、WPFの作りに接してしまうと、従来のGDI/GDI++の再描画の仕組みとコントロールの管理の仕組みが野暮ったく感じてしまいます。
私的には、VS7.0から .NETに変わったことより, GDI/GDI++から WPFに変わったことのほうが、衝撃が大きいです。
 毎度言う事ですが、実業務への普及は当分先になりそうですね。

 

 

投稿日時 : 2007年5月7日 15:14

Feedback

# re: WPFの感動 2007/05/07 15:23 シャノン

#杞憂でしょうか…杞憂ならいいんですが。

Vista+WPFが登場しても、旧来のGDIやコントロールモデルは存続しています。
が、いつの日かこれが完全になくなって、描画にはWPF/DWMを使うしかない時代が来てしまうことを憂慮しています。
そうなった時、.NET Frameworkに乗らない言語はWindows上で存在できるのか? という心配です。

# re: WPFの感動 2007/05/07 16:35 Ognac

>NET Frameworkに乗らない言語はWindows上で存在できるのか? という心配です
Win32APIの消滅を意味すると思うので、当分は無いと思います。
 ふと思い出した言説(?)があります。「MS製品は第三版から使い物になる」
MS-DOS 3.x , Windows 3.x , NT3.x など, SQL/Server, Access も(通算で)3版からマトモになった気がします。
となると、FrameWorkも、3.0 / 3.5(ORCAS)が基本仕様になるのかな。2.0以前の仕様は朽ち果てる?

# re: WPFの感動 2007/05/07 16:56 とっちゃん

杞憂では済まなくなってしまいましたよ>Vista+D3D10

DWMがONの環境では、GDI は CPU によるソフトレンダリングになります。
描画先が、画面ではなく D3D のサーフェス上に変わったからです。
そのため、同一ハードウェアだとソフトによっては描画が遅くなるという現象が発生する場合がありますs。

また、WM_PAINT の発生も今までと同じではなくなりました。
そのため、画面が隠れていたのが出てきたからと言ってWM_PAINTが来るということもなくなっています。

ほかにも、いくつかのメッセージが来なくなっていたりと
かなりの部分の描画系メッセージが変わっています。

ただ、だからといって、GDIが亡くなったわけではありません。
少なくとも互換性を維持する限りは生き残り続けると思います。
ま、その頃でもGDIを選択していてもいいのか?という問題はありますけどねw

# re: WPFの感動 2007/05/07 17:40 シャノン

一番心配なのは、WPFがマネージド専用ってとこです。
Win32APIが、CreateWindowExが無くなっちゃったら、アンマネージWindowsアプリはどうやって作ればいいの? という。
だからまだ、実現するとしても相当先の話なんですけどね。

> 「MS製品は第三版から使い物になる」

WPF 3.0でw

# re: WPFの感動 2007/05/07 19:47 Ognac

>かなりの部分の描画系メッセージが変わっています。
そうでしたか。認識不足でした。 Win32API下でも互換性は保てないんですね。
益々、互換性信奉者への説明が難しくなる。....WPF化が遠のく....orz。

>WPF 3.0でw
という解釈もなりたつのか...Framework3.5であって欲しい

# re: WPFの感動 2007/05/07 20:51 とっちゃん

>第三版から
.NET の実質的な 3.0 は 4.0 以降に持ち越しなので...w
コアコンポーネントが 2.0 のままという事はないだろうから、それが変わるときが大きな変動期になると...w


ちなみに、メッセージの変動は、9x -> 2000にもあったし、2000 -> XP のときにもいろいろありましたよ。
とくに、VisualStyle に対応するとメッセージの流れがガラッと変わります。



あ、そうそう互換性信奉者には、「Win32の寿命は長くてあと30年です。」とお伝えくださいw
CP-Mの頃からの決定事項なのですが、2038 年には今のシステムは停止します。

だれも互換性維持はできません。なんせ、ファイルシステムが破たんするんですからww
#半分はジョークですが、半分は本当ですw

# re: WPFの感動 2007/05/07 21:00 NyaRuRu

個人的には MIL アプリケーションの分散レンダリングはどの程度気合いを入れるのか多少気になるところはありますね.

正直なところ GDI ベースの Remote Desktop はかなりいいレスポンスを維持できていると思っていて,それに比べれば MIL ベースの分散レンダリングは UI レスポンスの面でいまいちです.
ただ,表示要素が増えてきたりアニメーション処理が増えてきたりすると,MIL ベースの分散レンダリングはスケーラビリティの面で将来性があるかなぁと.
まあその前にアプリケーションが軒並みブラウザ内に行っちゃうかもしれませんが.

何のことか分からない人は,『デスクトップ ウィンドウ マネージャを使用して特殊効果を施す』の「アプリケーションのメイン ウィンドウ スレッドがそのシーンをレンダリングすると……」以下段落を参照のこと.
http://msdn.microsoft.com/msdnmag/issues/07/04/Aero/default.aspx?loc=jp#S2

# re: WPFの感動 2007/05/07 22:31 Ognac

>、「Win32の寿命は長くてあと30年です。」とお伝えください
伝えます。どんな反応を示すかな.!? (互換性信奉者ネタは後日)

>ちなみに、メッセージの変動は、9x -> 2000にもあったし、2000 -> XP のときにもいろいろありましたよ
この辺りの変化はロジックには影響しなかったかと。
同名のグラフィック系APIで Win9x系とNT系では結果が異なったりして、結構泣いた記憶が...
WM_Paintの動作が異なると、再描画系のロジックに影響するのでこれまでとは異質なメッセージの変動の気がしてます。

NyaRuRuさん、始めまして。ありがとうございます。NyaRuRuの日記を楽しませて貰ってます。

>分散レンダリング
デザインとロジックの分離を進めるとブラウザー型になるのは不可避なんですかね。代案が浮かびません。
「パフォーマンス面でのマイナス面を差し引いても、分散させるほうがメリットがあると判断した」と認識したほうがいいのなあ。
GDI/++ の復権はないのでしょうね。


# re: WPFの感動 2007/05/07 23:49 シャノン

念のため言っとくと、俺は互換性信者じゃありません。
ただ、MILCORE APIがアンマネージプログラムに公開されればいいだけの話なんです。

…それじゃダメ? WPFコントロールなんかはMILCOREより上のマネージ層ですか?
データバインディングみたいな高レベル機能は仕方ないとしても、CreateWindow相当の低レベル機能はアンマネージから使えるようにしてほしいですよ。

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=585734&SiteID=7

にNyaRuRuさんが投稿された

> 以前から Microsoft は milcore.dll の一般開放をずっと否定 (あるいは時期尚早) としているので,Vista 登場時期で我々が利用できる可能性は薄そう,という状況に見えます.

というのが、今のところの希望です(否定じゃなくて時期総称であってくれと)。

# re: WPFの感動 2007/05/08 12:15 とっちゃん

WPF は、MILCORE より上の層ですね。
WPF のモデルはMILの中にはないと思いますw

まま、milcore.dll というかMILを公開は今の状態じゃ無理っしょ。

プリンタ関係放置だしw
これを解決しないことには、先はないです。

# re: WPFの感動 2007/05/08 16:21 シャノン

> milcore.dll というかMILを公開は今の状態じゃ無理っしょ。

今じゃなくてもいいです。
Win32 API が無くなる前にやってくれれば。

タイトル
名前
Url
コメント