.NET ROOM.NET ROOMトップへCOMRADE総合トップへ
「1:COM/.NETコントロールの作成方法」へ



1:COM/.NETコントロールの作成方法

 ・はじめに
 ・作成するコントロール
 ・VC++.NETを使ったCOMコントロールの実装
 ・VC#.NETを使った.NETコントロールの実装
 ・COMコントロールと.NETコントロールの簡単な比較
 ・.NETコントロールの実装の詳細
 ・コントロールのテスト
 ・最後に
 ・ガベージコレクションのパフォーマンスへの影響

 ◆付録 (本稿で取り上げたソースコードおよびサンプルプログラム)
   \DigitText\DigitText.sln
     今回作成したコントロールプロジェクトのソリューションファイル
   \DigitText\test
     テストプロジェクト

はじめに

 本連載では、.NETでコントロールを作るにあたって、注意すべき点などを取り上げてゆきます。
今回は、Visual Studio .NET 2003を使ってCOMコントロールおよび.NETコントロールを作成し、
カスタムコントロールを作る手順を説明してゆきます。
また、その過程で、プロパティやメソッドのオーバーライドの仕組みやイベントハンドラの登録など、
コントロールを使う上で必要な要素の説明もしてゆくことにします。



作成するコントロール

 はじめに、作成するコントロールと使用するツールなどに関して、簡単に説明してゆきます。

使用するツール


・COMコントロール
 COMコントロールの作成には、Visual C++ .NET 2003(以下VC++.NET)を使用します。
C++ではこれまでのVisual C++6.0などと同様に、MFCやATLを使用してコントロールを作成できますが、
今回はMFCを利用して簡単なコントロールを作ることにします。
ATLを利用したコントロールの作成方法に関しては、関連書籍などをご覧ください。

・.NETコントロール
 .NETコントロールの作成には、Visual C# .NET 2003(以下VC#.NET)を使用します。

仕様


 コントロールの仕様は以下のようなものとします。あまり実用的とは言えませんが、
解説のためのコントロールですので、実際に使用する環境に合わせてカスタマイズしてください。


・標準テキストボックスの派生
・Key入力を、数字と編集のためのBackSpaceのみしか受け取らないように制御する
・コードでの値の入力を数字文字列のみに制御する



 上記の仕様を満たすため、各コントロールの具体的な仕様は表1のようにします。
それでは実際の作成手順を説明してゆくことにしましょう。

表1:各コントロールの仕様
種別 仕様
COMコントロール ・EDITコントロールから派生
・WM_CHARメッセージの処理をオーバーライドするために、 OnCharを実装
・TextChangedイベントで入力を制御
.NETコントロール ・System.Windows.Forms.TextBoxから派生
・KeyPressイベントの処理をオーバーライドするために、
 OnKeyPressのオーバーライドメソッドを実装
・Textの入力を制御するために、Textプロパティをオーバーライドを実装



ページトップへ


VC++.NETを使ったCOMコントロールの実装

 はじめにVC++.NETを使って、MFC COMコントロールを作成する手順を説明します。

 Visual Studio .NETのメニューから[ファイル]-[新規作成]-[プロジェクト]を選択して、
「新しいプロジェクト」というダイアログを開きます。
そして、「プロジェクトの種類」から「Visual C++プロジェクト」を、「テンプレート」から
「MFC ActiveXコントロール」を選択し、任意のプロジェクト名を付けてプロジェクトを作成する場所を選びます(図1)。

図1:Visual C++プロジェクトの作成



 図1の[OK]ボタンを押すと、「MFC ActiveXコントロールウィザード」という画面が現われます。
左のタブから「コントロールの設定」を選択すると、コントロールの設定用の画面に切り替わります(図2)。
今回COMコントロールはMFCのEDITからの派生で作成するため、「次に基づいてコントロールを作成」から
「EDIT」を選択して、[完了」ボタンを押してください。

図2:MFC ActiveXコントロールウィザード(コントロールの設定画面)



 続いて、WindowsメッセージのWM_CHARとTextChangedイベントを処理するための設定を行ないます。
メニューから[表示]-[プロパティウィンドウ]を選択してプロパティウィンドウを表示し、
メッセージアイコンをクリックしてWM_CHARを選択すると(図3)、オーバーライドメソッドが自動生成されます。

図3:WM_CHARメッセージの処理のオーバーライド



 同様に、プロパティウィンドウでオーバーライドアイコンをクリックしてOnTextChangedメソッドを
クリックすると(図4)、オーバーライドメソッドが自動生成されます。

図4:OnTextChangedメソッドのオーバーライド



.NET Roomトップへ | ページトップへ | 次へ