OSC 2006 Tokyo/Fall で大好評だった!?OSASK計画&はりぼて友の会 コラボレーション CD-R で使用したOSランチャーの沖縄版を開発 しました。前回は、OS の解説を表示する部分が切り替えの度にチラつくという問題点があり、どうしても納得できなかったので、新規に書き直しました。 見た目はそれほど変わっていませんが、開発に当たり大きなこだわり1つ捨てました。
そう、Windows 95 のサポートです。今まで頑なに Visual C++ 6.0 にこだわってきた理由の1つは Win95 をサポートするためだったわけですが、 間もなく Vista がリリースされるというこのご時勢で Win95 を使っているユーザがどれだけいるのかと?なにより、Win95 が動いているようなハードウェア で、QEMU 上のではりぼてファミリーを満喫できるのか??と考えていくと、無理にこだわり続ける必要もないという結論に達しました。今更ですけど。
で、どうせ Win95 のサポートを切るならというわけで、一気に Visual Studio 2005 (VC++8) を使用することにしました。今後は、CrystalMark と CrystalCPUID の メイン部分を VC8 で作ろうと考えているので、ノウハウの習得も兼ねて。で、今回のポイントは HTML/XHTML + CSS でダイアログを作成できる CDhtmlDialog という ものを使用したことです。これは、VC7 の時からあったのですが、当時はこの偉大さに全く気がつかず、VC6 を妄信していたわけです。 C++ なら VC6 で十分でしょ?って感じで。後に VC7.1 の最適化コンパイラは革命的な進歩を遂げていることに気がついたりするわけですが、互換性をひたすら重視 してきたわけです。ふぅ。
CDhtmlDialog で検索していただけるとわかると思うのですが、意外や意外。あんまり情報がありません。で、今までの知識を駆使したり数少ないサンプルコード を眺めたりしながら、ようやく HTML + CSS で作成した GUI 部からのイベントを受け取るイベントハンドラを一通り作成できるようになりました。いやはや、 こんなに便利なものを使っている人が少ないのは不思議ですねぇ。で、CDhtmlDialog のご利益はたくさんあります。
- デザインとロジックの分離
デザイン部をプログラムではなく CSS で相当制御できるようになります。今回の例では、a:hover を使って画像の切り替えを行っていますが、C++ で書くと 画像の準備や切り替えコードなど色々書かねばなりません。 - PNGに対応
GDI+ に頼らず、PNG の読み込みに対応するためには、libpng + zlib などの外部ライブラリに頼る必要がありますが、表示部分はIEコンポーネントなので PNG にもバッチリ対応しています。まぁ、VC8 上から追加してもうまくいかないようなので、直接リソースファイルを編集する必要がありそうですが・・・。 - JavaScript が使用可能
実は、今まで JavaScript の重要性に全く気がついていなかったのですが、JavaScript を使えば、C++ でコードを書くことなく、 さらに積極的にデザインを改良できたりするわけです。いやはや、これでロジックに集中できますよ。
というわけで、はりぼてランチャー for OSC2006Okinawa は OSC2006Okinawa 開催後に公開予定の ISO イメージに含まれる予定です。


