特集Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画επιστημη(えぴすてーめー)2007/03/06  | 
![]()  | 
| 
 | 
|
事前の準備として、「dotNetStringStack」という名前で新規ソリューションを作成し、このソリューションに先ほど作成したMFCアプリケーションの「MFCStringStack」プロジェクトを追加します(※詳しい作成手順は、「.NETでのDocument/Viewアーキテクチャの構築方法」の項で説明した積算機アプリケーションの手順を参考にしてください)。
さらに、Documentとして「StringStackDocument」という名前のC++/CLIのクラス・ライブラリのプロジェクトを、Viewとして「StringStackView」という名前のC#のWindowsフォーム・アプリケーションのプロジェクトを追加します。StringStackViewプロジェクトでは、[参照設定]でStringStackDocumentプロジェクトを参照するように設定してください。最後に、StringStackViewプロジェクトを[スタートアップ プロジェクトに設定]します。
●Documentインターフェイスの作成
  | 
まずはDocumentのインターフェイスを定義し、これだけでアセンブリ(StringStackInterface.dll)を作成しておきます。
具体的には、dotNetStringStackソリューションに「StringStackInterface」という名前のC#のクラス・ライブラリのプロジェクトを新規に追加し、自動生成されたファイルを開き(※本稿では「Class1.cs」を「StringStackInterface.cs」にリネームしています)、以下のコードに書き換えます。
  | 
|
| C#で記述したDocumentのインターフェイスのソース・コード(StringStackInterface.cs) | 
Viewはこのインターフェイスを経由してDocumentを操作しますので、(Viewを実装するC#の)StringStackViewプロジェクトでStringStackInterfaceプロジェクトを参照設定しましょう。
さらにDocumentはこのインターフェイスをインプリメントすることになるので、(Documentを実装するC++/CLIの)StringStackDocumentプロジェクトでもStringStackInterfaceプロジェクトを参照設定しておきましょう(※VC++での参照設定は、ソリューション・エクスプローラでプロジェクトを右クリックして、表示されるコンテキスト・メニューから[参照]をクリックしてプロパティ・ページを開き、そのプロパティ・ページの[新しい参照の追加]ボタンを押すと表示されるダイアログの[プロジェクト]タブから設定できます)。
●Viewの構築
Viewのデザインは元のMFCアプリケーションと同じにします。本稿では自動生成された「Form1.cs」を「StringStackView.cs」にリネームし、Windowsフォームのクラス名を「StringStackView」としています。
![]()  | 
| C#によるView(Windowsフォーム)のデザイン(StringStackView.cs) | 
あとは各ボタンのClickイベント・ハンドラを実装し、DocumentからのUpdateAllViewsイベントを受理して左側のリストボックスを埋めるOnUpdateメソッドを追加します。
  | 
|
| ViewのClickイベント・ハンドラとOnUpdateメソッドの実装(StringStackView.cs) | 
Windowsフォームを起動するMainメソッドでは、生成したDocument(=StringStackDocumentクラスのオブジェクト)をフォーム(=StringStackViewクラス)のコンストラクタに与えなくてはなりません。
  | 
|
| フォームを起動するMainメソッドのソース・コード(Program.cs) | 
●Documentの構築
さて、準備が整ったところでDocument側をC++/CLIで実装します。MFCで書かれた元コードのDocumentを.NET化するわけですが、これには大きく2つの方針が考えられます。「できるだけ.NET Frameworkを利用するか」もしくは「できるだけネイティブなC++コードを残すか」です。
ここでは両方の実装をお見せしましょう。
| INDEX | ||
| [特集] | ||
| Vista時代のVisual C++の流儀(前編) | ||
| Vista到来。既存C/C++資産の.NET化を始めよう! | ||
| 1.Vista時代にC/C++はもはやお払い箱なのか? | ||
| 2.C/C++資産をどこまで生かせる? | ||
| 3.ネイティブ・オブジェクトをマネージ・コードでくるむ | ||
| 4.文字コード変換 | ||
| Vista時代のVisual C++の流儀(中編) | ||
| MFCから.NETへの実践的移行計画 | ||
| 1.C++/CLIによるWindowsフォーム・アプリケーション | ||
| 2.言語をまたいだDocument/Viewアーキテクチャ | ||
| 3..NET移行前のMFCサンプル・アプリケーション | ||
| 4.MFCのDocument/Viewアーキテクチャの.NET化 | ||
| 5.MFCで書かれたDocumentを.NET化する2つの方法 | ||
| Vista時代のVisual C++の流儀(後編) | ||
| STL/CLRによるDocument/Viewアーキテクチャ | ||
| 1.STL/CLRとは | ||
| 2.STL/CLRの特徴 | ||
| 3.Visual Studio 2005で試す | ||
| 4.おまけ:NUnitの活用 | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える 
 
  | 
 |






