ユーザー定義のインクルードファイルの作成

インクルードファイルは、本体とは別のファイルにソースが記述されているファイルです。
ライブラリとしてよく用いられます。
ライブラリとしてインクルードファイルを用意することで、クラスや構造体などを 別のプロジェクトで再利用、他のプラットフォームへの移植を容易にすることも可能です。
Delphiでいうならuses節にunit名を書いて、利用したいクラスや構造体を使えるようにすることと同じ。
Javaでいえばimportで利用したいパッケージやクラスを追加することと似ています。
(しかし本を読んでみると自分が知ってる使い方が違った・・・個人的にいやな使い方だなぁといった感じ)

インクルードファイルをつくるには通常のエディタ(秀丸やメモ帳)を利用する方法と VC++のエディタを利用する方法があります。
とりあえずなれていないのでVC++のエディタで作ります。

インクルード

メニュー[ファイル]→[新規作成]を選択します。
すると、新規作成のウィンドウが開くので、ファイルタブを選択します。
その中の[C++ ソースファイル]を選択し、[プロジェクトへ追加]にチェックします。
複数プロジェクトが存在する場合は、コンボボックスから適当なプロジェクトを選択してください。
(たしか、プロジェクトに追加しなくてもあとで追加できたはず)
ファイル名も指定しておきましょう。

で、とりあえず適当なソースを書きます。

たとえば、

/////////////////////////////////////////////////////////////////////////////
// CVSdiBaseView クラスの描画

void CVSdiBaseView::OnDraw(CDC* pDC)
{
    CVSdiBaseDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: この場所にネイティブ データ用の描画コードを追加します。

    pDC->TextOut(0, 0, "Hello! World");
    pDC->TextOut(0, 30, "VC++ Programing now...");
}
となっていたとします。
これをインクルードファイルを利用して見ます。

まず、pDC->・・・の2行をコピーします。
で、新規作成で、C++ソースファイルを作成します(先ほどの手順で)
作られたソースファイルにコピーした内容を貼り付けて保存します (ここではinc01.cppとします)

OnDrawメソッドの//TODOの下にインクルードの定義を記述します。
/////////////////////////////////////////////////////////////////////////////
// CVSdiBaseView クラスの描画

void CVSdiBaseView::OnDraw(CDC* pDC)
{
    CVSdiBaseDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: この場所にネイティブ データ用の描画コードを追加します。

    //ソースをインクルード
    #include "inc01.cpp"
}
これで、よいそうです。
(個人的にはいやだなぁこれ。関数にして呼びたいなぁ・・・)

ちなみに、僕が知っているのは、ファイルの先頭に記述する方法で、 インクルードするファイルには関数や構造体、クラスが定義されていたり、 ヘッダファイルだったり・・・というもの。
関数内でインクルードしてその中身をあたかも同一ソースのように実行できるとは知らなかった・・・

ちなみにVC++でインクルードしたファイルがエラーになった場合は、 FileViewで問題のファイルが[外部依存関係]のところにあるかを確認するといい。
[Source Files]にインクルードすべきファイルがある場合は、エラーを起こして コンパイルできない。 [Source File]のところにあった場合、インクルードするファイルをツリーからはずしてみる。
すると[外部依存関係]のところに表示されることがある。