Visual C++ 2008 Feature Pack: MFCの強化はじめに昨年Microsoftが約束したように、今度の新しいVisual C++では、ネイティブコードによる開発と、ネイティブとマネージドの世界を融合するコードの部分に重点が置かれています。すべての機能をC#やVisual Basic.NETなどのマネージドオンリー言語と同等に維持しても、それではVisual C++の製品としての意味がありません。マネージド機能との同等性を重視すればするほど、Visual C++という製品の本来の領域、つまりネイティブコーディングおよび相互運用コーディングからは遠くなっていきます。 Visual C++ 2008は、Microsoftのネイティブコードへの新たな取り組みを大きく反映し、この10年で初めて、MFCを刷新してWindowsコモンコントロールライブラリをフルサポートします。単にWindowsをカバーするだけでなく、Visual C++チームはVisual C++ 2008 Feature Packもリリースし、Visual StudioおよびMicrosoft Office風ユーザーインターフェイスを持つアプリケーション開発のサポートを組み込んでいます(現在、このFeature PackはBeta版であり、ここからダウンロードできます)。このMSDN Webサイトの記事で説明されているように、MFCの更新は、MicrosoftのVisual C++チームとパートナー関係にある外部企業(BCGSoft社)が行いました。 編集部注
バージョンは執筆当時。現在は正式版がリリースされています。
Visual C++ 2008 Feature Pack Beta版をインストールするときは注意が必要です。インストーラにバグがあり、Visual Studio 2008の完全インストールを選択しないとインストールが終了します。また、Visual C++/Visual Studioがインストールされているオリジナルメディアを利用することもできません。このような問題を最も簡単に解決するには、ディスクドライブにVisual Studio 2008 DVDをセットするか、Visual Studioをインストールした元の場所へのネットワークアクセスが可能であることを確認します。Feature Pack(ダウンロードサイズは303MB)にはドキュメントが含まれていません。そのため、新しい機能について説明する2つのCHMファイルをMSDNから別途ダウンロードする必要があります(ダウンロードサイズは3MB)。 編集部注
上記ダウンロードページは現在閉鎖されています。
このFeature Packは、明確な2つの機能領域に分かれており、MFCの更新とTR1機能があります。TR1は、C++言語に一時的に追加される機能で、C++0xリリースでC++の新機能として正式に採用されるかどうかは未定です(なお、0xは今後10年のうちに新しい規格が採用される可能性を示すものです)。TR1の詳細については、このMSDNブログの投稿記事に記載されており、今後の記事でもさらに詳しく取り上げられる予定です。MFCの更新1998年のVisual C++ 6のリリース以後、MFCの勢いは下り坂になりました。MFCには、Windowsオペレーティングシステムの一部としてリリースされるコントロールの機能が含まれていますが、Visual C++ 6以降にリリースされたMFCには、.NETが目前に控えていたため、これらの機能は含まれていません。以前の記事で述べたとおり、MFCは、Visual C++ 2008によって大幅に更新されました。Feature Packでも引き続きMFCが更新され、Vistaオペレーティングシステム上で動作したり、Internet Explorer 7やOffice 2007などのアプリケーションと併用できるアプリケーションを容易に開発できるようになっています。 Feature Packを使用して作成したMFCアプリケーションの長所を手っ取り早く知るために、サンプルを実行してみましょう。旧世代のMFCとはまったく異なることがはっきりとわかります。 図1に、Feature Packに付属するMSOffice2007Demoサンプルアプリケーションを示します。一見すると、このアプリケーションはOffice 2007の一部であるかのように見えます。これがサードパーティ製コントロールも使っていない、何百行にもわたるオーナー描画GUIコーディングも行っていないMFCアプリケーションであるという事実は、少し前まで兄弟分のWindows FormsやWPFに大きく後れを取っていたMFCの状況を考えると、まさに驚くべきことです。 図1には、いくつかの新しいユーザーインターフェイス要素がありますが、最も目立つのは、いわゆる「WOWファクター」をアプリケーションにもたらすリボンコントロールです。リボンコントロールは、ユーザー向けの多種多様な機能を非常に多く備えており、これを一から実装しようとすると膨大な手間がかかります。たとえば、リボンコントロールの実装は25種類のCPPファイルによって構成され、これらのサイズは1MBのソースコードの実に半分を占めます。このようなことから、MFCリボンを実装することがどれだけ複雑であるか、その一端を理解できます。 既存のアプリケーションをアップグレードして、標準メニューとツールバーのUIをリボンベースのUIに移行することは、それほど困難ではありません。まず主な作業として、 CMFCRibbonBarおよびCMFCRibbonApplicationButtonメンバ変数をアプリケーションのCMainFrameクラスに追加し、次に、リボンに表示する各種画像を保持するCMFCToolBarImagesメンバ変数を追加します。リボン上の各タブ(Microsoft Word 20007の[Home]、[Insert]、[Page Layout]タブなど)はカテゴリと呼ばれます。リボンに新しいカテゴリを追加する場合は、 CMFCRibbonBar::AddCategoryメソッドを呼び出します(このメソッドは、大きなアイコンと小さなアイコンをパラメータとして利用します)。CMainFrameクラスに前述の新しいメンバ変数を追加するほかに、MFCによって生成されるコードのほとんどの基本クラスを、新しいスタイルのExクラスを使用するように変更する必要があります。つまり、CWinAppEx、CMDIFrameWndEx、CMDIChildWndEx、およびCSplitterWndExというクラスを、それぞれの非Exスタイルのクラスの代わりに使用するようにします。新しいExクラスは、どれも対応する非Exクラスから派生したものであるため、アプリケーションにはほとんど影響しません。幸いなことに、Visual C++ 2008 Feature Packをインストールすると、MFCアプリケーションウィザードも更新されるため、同ウィザードから、リボン機能をフルサポートしたOffice 2007風アプリケーションを直接作成することができます。MFCアプリケーションウィザード内では、[Application Type]が更新され、新しい視覚スタイルと色([Visual style and colors])がいくつか追加されます(図2を参照)。 図2 新しいMFCアプリケーションの視覚スタイル ![]() 図3 Office 2007風アプリケーションの配色ドロップダウンメニュー ![]() これは、リボンをサポートするために必要なメニュービットマップのテンプレートとして利用できるからです。アプリケーションウィザードによって生成されるリボンコントロールの例は図3で確認できます。 図4 新しいMFCアプリケーションでのリボンバーの使用 ![]() CDockingManager::SetDockingMode(DT_SMART); 図5 スマートドッキングの操作中 ![]() オーナー描画コントロールやサポートが不十分なサードパーティ製ツールキットを苦労しながら長年使ってきた開発者にしてみれば、このような強力なユーザーインターフェイス機能がVisual C++チームの手で開発およびサポートされるというのは喜ばしいニュースであり、今後のVisual C++によるネイティブ開発の復興を確信させる出来事です。実際、Feature Packは非常に優れたソフトウェアです。 著者紹介Nick Wienholt(Nick Wienholt)
シドニーに拠点を置く独立系Windowsおよび.NETコンサルタント。著書に『Maximizing .NET Performance』、共著に『A Programmers Introduction to C# 2.0』(いずれもApress刊)。システムレベルソフトウェアアーキテクチャおよび開発を専門とし、パフォーマンス、セキュリティ、相互運用性、およびデバッグに精通。
.NETコミュニティに精力的に参加。Sydney Deep .NET User groupの創設者の1人。Australian Developer Journal、ZDNet、Pinnacle Publishing、CodeGuru、MSDN Magazine(Australia Edition、New Zealand Edition)、およびMicrosoft Developer Networkで技術記事を執筆。SDNUGでの発表、記事、および.NETブログのアーカイブはwww.dotnetperformance.comから入手可能。 .NET分野での功績が評価され、2002〜2007年までMicrosoft MVP受賞。 関連記事 最新トップニュース
|
【ケータイ USA】新しい iPod は来週火曜に発表されるだろう(9月6日 13:00)
なぜ勝った? 世界No.1シェアをつかんだ“Windows”(9月5日 11:00)
Apple が『iPod』関連の発表を準備中、内容は如何に(9月4日 12:40)
ソフトバンクモバイル、8月の純増数は約16万件――携帯電話契約数に関する速報(9月5日 14:40)
TCA、8月度の携帯契約数を発表――ソフトバンクが16か月連続純増 No.1 に(9月5日 18:00)
私の周りは“geek out”している人ばかり(9月5日)
|