特集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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|