CDHtmlDialog はなぜ IE のユーザー補助設定に依存するのか・・・
[2010/10/3] 解決済み:CDHtmlDialog を IE 設定に依存させない方法
CrystalDiskInfo および CrystalDiskMark は CDHtmlDialog クラスを使用しています。
CDHtmlDialog を使うことで HTML + CSS + JavaScript で GUI が構築することができ、従来のダイアログリソースを使った UI と比べて、高品位(だと自分では思っている)な UI を手軽に実現することができます。(それなりの手間はかかりますが・・・)
例えば、CrystalDiskInfo のディスク選択部分は Hover 時に背景画像を変更していますが、これは CSS だけで実現しています。この処理を標準のボタンコントロールなどでは実現できないので、カスタム/オーナードローなどをする必要があります。また、表示する画像の管理も全部自前で行う必要があります。面倒くさいですね。大変ですね。
また、CrystalDiskInfo のグラフ機能は、Flot という JavaScript ライブラリで実現しています。これだけの機能をすべて C++ で実装するとなると・・・たぶん私の実力では無理だと思います。
このように、慣れ親しんだ HTML + CSS に加えて無数に存在する魅力的な JavaScript ライブラリが自由に使える CDHtmlDialog は、.NET 化できない開発者にとって最後の楽園とも思えるのですが・・・
いくつか問題もあります。
- IE のユーザー補助設定などに依存する
- IE6/7/8 など IE のバージョンによって動作が異なる
- 何らかの理由で IE が動作不能な環境では、ダイアログの構築に失敗する
3 については極めて稀ではありますが、私自身何度かその状況に出くわしております。2 は IE のバージョンを意識すれば対応可能ですが、IE6 の対応はちょっと面倒ですね。
一番の問題は 1 の IE 設定に依存してダイアログが乱れてしまうということです。CrystalDiskInfo のマニュアルには一応 IE の設定に依存するのでデフォルト設定でよろしくと注意書きはしているのですが、普通はマニュアルを熟読する前に起動しますよね・・・。
Web 上で見かけるスクリーンショットでもちょっと描画が意図したものと異なるものが存在しますし、海外のユーザーさんからもダイアログが変なんだけど・・・という問い合わせを何度か受けています。個人的には、IE の設定は全然触らないのですが、必要な人は設定していますよね。
と、ダラダラ書いていますが、何を言いたいかというと CDHtmlDialog というか IE コンポーネントを IE の設定に依存せずに標準設定で使う方法はないのかなぁ~ということです。ご存知の方がいらっしゃいましたらぜひお知恵を・・・。
ちなみに、WebKit や Gecko も眺めてみたのですが、GUI を構築するためだけに使うには大げさすぎるというかなんというかそこまでするなら WPF に移行したほうが賢明かなと思うわけです。
貴重な祝日も結局 GUI をどう構築するかという一般ユーザーにとってはどうでもいいような悩みで浪費してしまうのであった・・・。
1件の返信
[…] CrystalDiskMark, Diary No Comments CDHtmlDialog はなぜ IE のユーザー補助設定に依存するのか・・・ というエントリもありましたが、本日ついに CDHtmlDialog ベースのアプリで […]