japan.internet.com The Internet & IT Network


RSSニュース検索
カテゴリ
> トップページ
> Webビジネス
> Eコマース
> Webファイナンス
> Webマーケティング
> パブリック
> Webテクノロジー
> 携帯・ワイヤレス
> Linux Today
> Linux Tutorial
> J.I.C.ブログ
キャリア
> 転職ならen
> 派遣ならen
> アルバイトならen
> IT求人情報
ヘッドライン
> 今日のヘッドライン
> 週間ヘッドライン
Special Link
> フォトコミュニティ
> ストックフォト
> クリップアート
> イラスト
> フェリカ
> Web2.0
> 写真
イベント&セミナー
> イベントカレンダー
> 書評「IT の耳」
> 出張・接待検索
> ニュースガジェット 注目
無料ニュースメール
> 新規登録
> 変更・解除
> オプトインメールの登録・変更・解除
インフォメーション
> パートナーサイト
転職ならエン
就職ならen
求人ならen
履歴書ならen
アルバイトならエン
CRM/SFAならオラクル
> グループ会社
株式会社アエリア
(株)サンゼロミニッツ
株式会社エアネット
> お問い合わせ
> 広告掲載について
> リンクについて
> 著作権について
> その他お問い合わせ
> 利用規約
> 個人情報保護方針
> 会社概要地図
デベロッパー 2008年7月4日 10:00
デベロッパー・バックナンバー
Visual C++ 2008 Feature Pack: MFCの強化

著者: Nick Wienholt  オリジナル版を読む プリンター用 記事を転送
2008年7月4日 10:00 付の記事
海外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受賞。


関連記事
  • Microsoft、『Visual C++ 2008』の機能追加パックをリリース
  • 「HOT」を搭載して『PostgreSQL 8.3』がリリース
  • 軽量で高速なハイパーリンクコントロールを実現するC++クラス
  • 日本コンピュウェア、開発部門向けに .NET アプリ開発支援ツール英語版を
  • MASM32によるアセンブラ入門:パート1


  • 関連テーマ
  • Microsoft
  • Blog


  • ★最新トップニュース
    海外 【ケータイ USA】イギリスの団体が iPhone の広告における Apple の虚偽に言及(携帯・ワイヤレス 8月30日 13:00)
    イギリスの広告基準協議会(Advertising Standards Authority:ASA)は、Apple に広告における真実について、訓戒を説こうとしているらしい。
    国内 ASUS、電源オンから約7秒で起動するコンパクト PC「Eee Box」を発表画像のある記事(Webテクノロジー 8月29日 18:20)
    ASUS は2008年8月29日、低価格なコンパクト PC「Eee Box B202」を9月13日に発売する、と発表した。
    国内 【今週の Web ミミズク】「予測市場」の将来を予測したい…(Webビジネス 8月29日 18:10)
    「予測市場」という言葉をちらちら耳にする。「予測」と「市場」という組み合わせが、耳新しいのかもしれない。あるいは、未来を予想できるかもしれない、という期待もあるかもしれない。
    国内 G DATA がゼロアワー攻撃の拡大を警告(Webテクノロジー 8月29日 18:00)
    G DATA が、国内でのゼロアワー攻撃が拡大している、と警告を発している。同社が2008年8月29日、明らかにした。
    国内 KDDI、「光で操作ナビ」などを搭載した簡単ケータイ「W62PT」を8月30日発売画像のある記事(携帯・ワイヤレス 8月29日 18:00)
    KDDI、沖縄セルラーは、2008年8月29日、au 携帯電話新ラインアップとして、パンテック&キュリテル製の簡単ケータイ「W62PT」を8月30日に全国一斉発売することを発表した。
    トピックス
    > オススメのIT系求人情報【毎週月曜日更新】
    footer_301.gif


    リサーチ
    > デイリーリサーチDLサイト
    > OnlineResearchPortal (リサーチデータバンク)
    > モバイルリサーチ with goo
    footer_301.gif
    キーワード
    > iPhone > Youtube
    > Google > モバイルノート
    > 半導体 > ウィルコム
    > テーマ一覧はこちら
    footer_301.gif
    セミナー情報
    > 第2回インターネットコムマーケティングセミナー
    「モバイルマーケティングの世界」〜これだけはやっておきたいモバイルマーケティング施策とは〜
    9月24日(水)13:00〜17:00 ITS 山王健保会館
    ※詳しくはこちら
    footer_301.gif
    デベロッパー
    > DevX
    > CodeGuru
    > developer.com
    footer_301.gif
    j.i.c.ブログ
    ブログ一覧
    ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」 【ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」】
    「選択と集中」選択をして集中しない限りは勝てない/メディカル・コミュニケーションズ株式会社(8月29日)
    データメーション 【データメーション】
    Apple は顧客の忠誠心にあぐらをかいているのか? (8月27日)
    Graphic Design Forum 【Graphic Design Forum】
    次へとつながる輪 (8月27日)
    最新テクノロジーの意外な処方箋 【最新テクノロジーの意外な処方箋】
    あなたが舌なめずりしたくなるようなもの(8月26日)
    エンジニアの独り言 【エンジニアの独り言】
    データをローカルに保存するWebアプリケーション(8月22日)
    デスマーチからの脱却 【デスマーチからの脱却】
    30min. iPhoneアプリリリース(8月18日)
    footer_301.gif
    最新コラム一覧
    台湾企業が席巻する電子製品製造 台湾企業が席巻する電子製品製造

    世界の IT 産業を担う台湾製造企業、馬政権誕生で中・台産業関係さらに緊密へ(8月29日)
    IT マネジメント IT マネジメント

    IT を変えつつあるのはどの技術?(8月29日)
    最新ハイテク講座 最新ハイテク講座

    繁栄か滅亡か!巨大なエネルギー「原子力」の未来(8月29日)
    developer.com developer.com

    レガシーWebアプリケーションをWebLogic Portal内のフルページIFrameとして統合する(8月29日)
    百式のネットビジネス研究 百式のネットビジネス研究

    友達にあなた特製のクスリを贈ることができる「Get Your Drug On」(8月29日)
    週刊-サイト別アクセス状況データ 週刊-サイト別アクセス状況データ

    ビデオリサーチインタラクティブ調査(月間インターネットオーディエンスデータ)(8月28日)
    「IT の耳」 「IT の耳」

    【書評】『1回の会議・打ち合わせで必ず結論を出す技術』――無意味な会議を撲滅する(8月28日)
    ハードウェアから見たデータベース ハードウェアから見たデータベース

    巨大テーブル活用術1(8月28日)
    ウチのサイトを SEO ウチのサイトを SEO

    検索エンジンが見ている世界(8月27日)
    エンジニア転職ノウハウ開発室 エンジニア転職ノウハウ開発室

    目指せecoエンジニア!グリーンITで地球を救え(8月26日)
    footer_301.gif
    専門チャンネル
    > セキュリティチャネル > テレコムチャネル
    > サーチエンジンウォッチ
    footer_301.gif
    海外のインターネットコム アメリカ韓国ドイツトルコ
    関連企業のサイト:ストックフォト イラスト ネットストリート ホテル予約サイト タウン情報 出張 事業継承 シミュレーション トランクルーム 優待映画チケット 田舎暮らしガイド オリジナルデザインTシャツ ニタコエ
    Copyright 2008 Jupitermedia Corporation All Rights Reserved. http://www.internet.com/
    space.gif space.gif