[[PageNavi(NavigationList)]]
=== 「Windows SDK for Windows 7」のインストールと設定 ===
Windows 7ではタスクバーが大きく変更されたほか、Office 2007で新しく採用された「リボンUI」がOS標準機能としてサポートされるなど、新たな機能が追加されている。これらの新機能を利用したソフトウェアを開発したい場合は、Visual Studioに加えてWindows 7向けのWindows SDK(Windows SDK v7.0、Windows SDK for Windows 7などとも呼ばれる)が必要だ。これをインストールすれば、インテル コンパイラーでもWindows 7の最新機能を利用したソフトウェアを開発できるようになる。
Windows SDK for Windows 7はマイクロソフトのWebサイトからダウンロードできる。32ビット(X86)版および64ビット(AMD64)版、そしてItanium版の3種類が用意されているので、利用する環境に対応したものをインストールしよう。なお、オンラインで必要なコンポーネントのみをダウンロードしてインストールできる「[http://www.microsoft.com/downloads/details.aspx?familyid=C17BA869-9671-4330-A63E-1F!D44E0E2505&displaylang=en Webインストール版]」と、DVD-Rなどに書き込んでからインストールする「[http://www.microsoft.com/downloads/details.aspx?familyid=71DEB800-C591-4F97-A900-BE!A146E4FAE1&displaylang=en ISOイメージ版]」の2種類があるが、ISOイメージ版はファイルサイズが約1.4GBと大きいので注意してほしい。
インストーラで必要な操作は、ライセンスへの同意とインストール先、そしてインストールするコンポーネントを選択するだけだ('''図15〜18''')。コンポーネントとしてはライブラリやヘッダーファイルに加えて、サンプルやVisual C++関連ファイル、開発・デバッグ用ツールなども含まれている。サンプルにはWindows 7の新機能を使うためのサンプルコードも多数含まれているので、これらに興味がある場合はインストールしておくと良いだろう。
[[Thumb(fbc89ee35c33b61cecfb53da24fbeebf.png, caption=図15 「Windows SDK for Windows 7」のインストーラ)]]
[[Thumb(52c2fa15fe78ce935de8f397250046c9.png, caption=図16 ライセンス同意画面。「I Agree」を選択して「Next」をクリックする)]]
[[Thumb(c204ff092eaeeedbcc106bbb7f029f34.png, caption=図17 インストール先の選択画面。通常はデフォルトのままで問題ないだろう)]]
[[Thumb(f1f21e9fbed57b6cc121fddf59f8c708.png, caption=図18 インストールするコンポーネントの選択画面。豊富なドキュメントやサンプルも含まれている)]]
なお、Windows SDK for Windows 7はVisual Studio 2008に含まれるWindows Vista向けのWindows SDK v6.0Aと共存できるようになっており、Windows SDK for Windows 7のインストール直後はWindows SDK v6.0Aが利用されるように設定されている。そのためWindows SDK for Windows 7を利用するには、スタートメニューの「Microsoft Windows SDK v7.0」以下、「Visual Studio Registration」内にある「Windows SDK Configuration Tool」を起動し、ここで設定を行う必要がある('''図19、20''')。
[[Thumb(65c066df0fa79020701dcdb8e32f799a.png, caption=図19 スタートメニューから「Windows SDK Configuration Tool」を起動する)]]
[[Thumb(86ac653e7570b0a2e6e86fa42fc608d7.png, caption=図20 「Installed Windows SDK Versions」で「v7.0」(Windows SDK for Windows 7)を選択し、「Make Current」ボタンをクリックする)]]
=== Windows 7アプリケーションのコンパイル ===
Windows SDK for Windows 7のインストールと設定が終わったら、Windows 7の新機能を利用したアプリケーションをコンパイルしてみよう。Windows SDK for Windows 7をインストールすると、デフォルトではシステムドライブの「Program Files¥Microsoft SDKs¥Windows¥v7.0¥Samples¥」ディレクトリ以下に多数のサンプルがインストールされる。今回はその中で、タスクバーの新たな機能である「ジャンプリスト」と、新たなUI「リボン」を利用するアプリケーションをビルドしてみた。
Windows 7で新たに登場した機能「ジャンプリスト」は、タスクバーに表示されているアプリケーションアイコンを右クリックしたときに、アプリケーション独自のメニューを表示する機能だ。たとえばInternet Explorer 8の場合、「よくアクセスするサイト」や「タスク」といったものが表示される('''図21''')。また、リボンUIはOffice 2007で採用されている新たなツールバーUIだ。簡単に言えばタブで切り替えられる大きいサイズのツールバーである。
[[Thumb(8c3507dfa955d684b2feab2cfed8f8cb.png, caption=図21 Intenet Explorer 8の「ジャンプリスト」。タスクバーのアイコンを右クリックすると表示される)]]
ジャンプリストを利用するサンプルは先のサンプルディレクトリ以下「winui¥shell¥appshellintegration¥!!AutomaticJumpList¥」および「winui¥shell¥appshellintegration¥!!CustomJumpList¥」ディレクトリ内に、リボンUIを利用するサンプルは「winui¥!!WindowsRibbon¥」ディレクトリ内に収録されている。ここでは、ジャンプリストのサンプルとして「!!AutomaticJumpList」を、リボンUIのサンプルとして「HTML!!EditRibbon」をインテル コンパイラーでコンパイルしてみた。
まず!!AutomaticJumpListだが、これは「File」メニューで選択したファイルを、ジャンプリストの「最近使ったもの」項目に追加する、というものだ。コンパイルはディレクトリ内のソリューションファイル(!!AutomaticJump!!ListSample.sln」をVisual Studioで開き、ソリューションをインテル コンパイラーでコンパイルするように設定してコンパイルを実行するだけで完了した。特にコンパイルエラーなどは発生せず、作成したアプリケーションも問題なく動作している('''図22''')。なお、このサンプルを実行する際、初回起動時にはファイル形式の登録のため管理者権限で起動を行う必要がある。
[[Thumb(8331429a84bf78718f1fd502ee1c2e22.png, caption=図22 「!AutomaticJumpList」サンプルの実行例。「最近使ったもの」項目が追加されている。)]]
続いての「HTML!!EditRibbon」はリボンUIを備えたHTMLエディタというものだ。こちらも同様にVisual Studioでソリューションファイルを開き、インテル コンパイラーでコンパイルを行ったところ、「CHTML!!EdView」クラス内でいくつかのエラーが表示されてしまった('''図23''')。
[[Thumb(f7057049d78d5e9415d40acb1a2ec987.png, caption=図23 インテル コンパイラーでコンパイルを行った場合、いくつかのエラーが表示されてしまった)]]
これは、「CHTML!!EdView」内で定義している関数と、その継承元である「CHTMLView」クラスで用意されている仮想関数の定義が食い違っていたからである。Visual C++の場合これはエラーとはならないが、インテル コンパイラーはより厳密なチェックを行うためエラーとなっているようだ。これは、次の'''リスト1'''のように修正を行うことで簡単に解決でき、作成したソフトウェアも問題なく動作した('''図24''')。
====== リスト1 HTML!!EditRibbonサンプルの修正個所 ======
{{{
・HTML!EdView.hの66行目
void !OnDocumentComplete();
を以下のように修正
void !OnDocumentComplete(LPCTSTR lpszURL);
・HTML!EdView.cppの135行目
void CHTML!EdView::!OnDocumentComplete()
を以下のように修正
void CHTML!EdView::!OnDocumentComplete(LPCTSTR lpszURL)
}}}
[[Thumb(0c4a6811069105bdce8558409761ffb8.png, caption=図24 「HTML!EditRibbon」サンプルの実行例)]]
[[PageNavi(NavigationList)]]