japan.internet.comThe Internet & IT Network
RSS
  • ニュース
  • コラム
  • リサーチ
  • ヘッドライン
  • 特集
  • ブログ
  • プレスリリース
  • 専門チャンネル
  • イベント
  • ランキング
  • ニュースメール
2008年9月6日
文字サイズ文字サイズ小文字サイズ中文字サイズ大
デベロッパー2008年7月4日 10:00

Visual C++ 2008 Feature Pack: MFCの強化

海外海外internet.com発の記事
  • このエントリーを含むはてなブックマーク
  • この記事をクリップ!
  • Buzzurlにブックマーク
  • Yahoo!ブックマークに登録
  • newsing it!

はじめに

 昨年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 MS Office 2007 Demoサンプルアプリケーション
図1 MS Office 2007 Demoサンプルアプリケーション
 図1には、いくつかの新しいユーザーインターフェイス要素がありますが、最も目立つのは、いわゆる「WOWファクター」をアプリケーションにもたらすリボンコントロールです。リボンコントロールは、ユーザー向けの多種多様な機能を非常に多く備えており、これを一から実装しようとすると膨大な手間がかかります。たとえば、リボンコントロールの実装は25種類のCPPファイルによって構成され、これらのサイズは1MBのソースコードの実に半分を占めます。このようなことから、MFCリボンを実装することがどれだけ複雑であるか、その一端を理解できます。

 既存のアプリケーションをアップグレードして、標準メニューとツールバーのUIをリボンベースのUIに移行することは、それほど困難ではありません。まず主な作業として、CMFCRibbonBarおよびCMFCRibbonApplicationButtonメンバ変数をアプリケーションのCMainFrameクラスに追加し、次に、リボンに表示する各種画像を保持するCMFCToolBarImagesメンバ変数を追加します。

 リボン上の各タブ(Microsoft Word 20007の[Home]、[Insert]、[Page Layout]タブなど)はカテゴリと呼ばれます。リボンに新しいカテゴリを追加する場合は、CMFCRibbonBar::AddCategoryメソッドを呼び出します(このメソッドは、大きなアイコンと小さなアイコンをパラメータとして利用します)。

 CMainFrameクラスに前述の新しいメンバ変数を追加するほかに、MFCによって生成されるコードのほとんどの基本クラスを、新しいスタイルのExクラスを使用するように変更する必要があります。つまり、CWinAppExCMDIFrameWndExCMDIChildWndEx、およびCSplitterWndExというクラスを、それぞれの非Exスタイルのクラスの代わりに使用するようにします。新しいExクラスは、どれも対応する非Exクラスから派生したものであるため、アプリケーションにはほとんど影響しません。

 幸いなことに、Visual C++ 2008 Feature Packをインストールすると、MFCアプリケーションウィザードも更新されるため、同ウィザードから、リボン機能をフルサポートしたOffice 2007風アプリケーションを直接作成することができます。MFCアプリケーションウィザード内では、[Application Type]が更新され、新しい視覚スタイルと色([Visual style and colors])がいくつか追加されます(図2を参照)。

図2 新しいMFCアプリケーションの視覚スタイル
図2 新しいMFCアプリケーションの視覚スタイル
 いずれかのOffice 2007視覚スタイルを使用してアプリケーションを生成した場合は、アプリケーションのリボンコントロールの上部に、Office 2007のさまざまな配色スキーマを選択できるドロップダウンメニューが配置されます(図3を参照)。

図3 Office 2007風アプリケーションの配色ドロップダウンメニュー
図3 Office 2007風アプリケーションの配色ドロップダウンメニュー
 標準メニューではなくリボンを使用するためには、アプリケーションウィザードで図4のような設定を行います。既存のアプリケーションをアップグレードしてリボンベースのユーザーインターフェイスに対応させる場合でも、新しいスケルトンアプリケーションを生成することをお勧めします。

 これは、リボンをサポートするために必要なメニュービットマップのテンプレートとして利用できるからです。アプリケーションウィザードによって生成されるリボンコントロールの例は図3で確認できます。

図4 新しいMFCアプリケーションでのリボンバーの使用
図4 新しいMFCアプリケーションでのリボンバーの使用
 リボンコントロールのほかにも、MFC Feature Packでは、Visual Studioと同様のウィンドウのドッキングもサポートしています。ドッキングの設定は比較的簡単で、次のようにドッキングマネージャへの呼び出しを行うだけで、スマートドッキングをサポートできます。

CDockingManager::SetDockingMode(DT_SMART);
 スマートドッキングを適用すると、画面内でウィンドウをドラッグしている間に、ウィンドウの移動先が視覚的に表示されます。これはVisual Studioと同じ視覚効果です(図5を参照)。

図5 スマートドッキングの操作中
図5 スマートドッキングの操作中
 Visual C++ 2008 Feature Packにより、MFCはかつてなく高いレベルに到達し、最新バージョンのMicrosoft Officeに近い外観のアプリケーションをすばやく容易に開発できるようになりました。

 オーナー描画コントロールやサポートが不十分なサードパーティ製ツールキットを苦労しながら長年使ってきた開発者にしてみれば、このような強力なユーザーインターフェイス機能が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受賞。
関連テーマ
このエントリーを含むはてなブックマーク この記事をクリップ!
BuzzurlにブックマークBuzzurlにブックマーク Yahoo!ブックマークに登録
最新トップニュース
データメーション
【データメーション】
OSについて気に入らないこと(9月5日)
ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」
【ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」】
「導入期〜成長期へ!一歩一歩と前進を目指す『Annoii(アノイ)』」/maka hou,Inc.(9月5日)
最新テクノロジーの意外な処方箋
【最新テクノロジーの意外な処方箋】
グリッドコンピューティング技術でETに遭遇(9月5日)
Graphic Design Forum
【Graphic Design Forum】
古い Emigre を探して (9月3日)
エンジニアの独り言
【エンジニアの独り言】
データをローカルに保存するWebアプリケーション(8月22日)
デスマーチからの脱却
【デスマーチからの脱却】
30min. iPhoneアプリリリース(8月18日)
最新ハイテク講座
最新ハイテク講座
なぜ勝った? 世界No.1シェアをつかんだ“Windows”(9月5日)
developer.com
developer.com
デザインパターンの使い方: Composite(9月5日)
最新アフィリエイト事例にみる成功の法則
最新アフィリエイト事例にみる成功の法則
コンバージョンレートを高めよう!(9月5日)
百式のネットビジネス研究
百式のネットビジネス研究
ガジェット購入時に将来の買取保証プランを提供する「TechForward」(9月5日)
週刊-サイト別アクセス状況データ
週刊-サイト別アクセス状況データ
ビデオリサーチインタラクティブ調査(月間インターネットオーディエンスデータ)(9月4日)
「IT の耳」
「IT の耳」
【書評】『検索にガンガンヒットさせる SEO の教科書』――SEO テクニックで効果的に PR する(9月4日)
検索エンジンマーケティング
検索エンジンマーケティング
果たしてモバイル SEO は必要なのか?(9月4日)
Eメールマーケティング事情
Eメールマーケティング事情
読者が迷惑メールと認識する時…(9月3日)
日本と韓国のインターネットビジネス最新動向調査
日本と韓国のインターネットビジネス最新動向調査
日本と韓国の動画サイト比較1―現状(9月3日)
SNSをビジネスに活用しよう
SNSをビジネスに活用しよう
「しまじろう」に学ぶ企業内コミュニティの活性化のポイント(9月2日)
海外のインターネットコムアメリカ韓国ドイツトルコ
Copyright 2008 Jupitermedia Corporation All Rights Reserved.http://www.internet.com/