はじめに
この連載では仮想的なLANを実装することにより、目に見えないTCP/IPプロトコル群を、手を動かして目で実際に確認しながら習得することを目的としています。ただし、TCP/IPの全てを解説するのは分量上不可能ですし、余計に読者を混乱させてしまいますので、筆者が重要と考えている部分だけ解説します。またサンプルコードや本記事に出てくるIPアドレスとMACアドレスについては架空のものであり、実際にそのIPアドレスを取得した組織などを意識したものではありません。あらかじめご了承ください。
今回は仮想ネットワークを実装する為に必要な知識であるMDIアプリケーションの作り方と、GDI+プログラミングの基礎を解説します。また、独自プロトコルの決定を行うことにより、プロトコルそのものに対する理解を深めるお手伝いをします。
本記事の対象を超えるもの、記述箇所を特定しないもの、読者固有環境に起因するもの、読者の主義思想に関するもの、読者の誤解によるもの、社会人としてのマナーを欠いたものなどは質問/指摘を頂いてもお答えできません。あらかじめご了承ください。
また、サンプルファイルとして、C#とVBのコードがダウンロード可能となっていますが、本記事内ではVBのコードは割愛し、C#のコードのみを説明します。VBを使用する方は、サンプルファイルの該当箇所を確認ください。
MDIアプリケーションの作り方
仮想ネットワークは複数のフォームを管理する必要がありますので、MDIアプリケーションとしています。MDI(Multiple Document Interface)とは1つのフォーム内に、複数のフォームを表示するグラフィカルインターフェースのことです。一例を挙げますとMicrosoft Excelがこれに該当します。
MDIアプリケーションを作るには、親となるフォーム(System.Windows.Forms.Formオブジェクト)を用意し、IsMdiContainerプロパティをtrueにします。
次に、親となるフォームの内部に表示するフォームである子フォーム側のMdiParentプロパティに、親フォームを指定します。文章では分かりにくいので、MDIの設定を行うサンプルプロジェクトMdiSampleを用意しました。確認してください。
using System;
using System.Windows.Forms;
static class MdiSample
{
static void Main()
{
//MDIの設定(親側)
Form parent = new Form();
parent.Text = "親フォーム";
parent.IsMdiContainer = true;
parent.WindowState = FormWindowState.Maximized;
//MDIの設定(子側)
Form child = new Form();
child.Text = "子フォーム";
child.MdiParent = parent;
child.Show();
//実行開始
Application.EnableVisualStyles();
Application.Run( parent );
}
}

