lMFC ウィンドウを表示する '97. 8. 3  97. 6.26
l.お知らせ 内容 LINK FILE   HTML Win PC Unix MS-DOS C C++ Mfc Java 
ファイル一覧 MFC   用法 3 書式・図形 6 ウィンドウ 9 保存・ファイル   検索  
1 文字列の表示 4 Bitmap画像 7 View・CTRL 10 予約(未定)  その他
2 クリックしたら表示 5 リソース 8 コレクション  乱数・タイマ  未使用
 Vre4.0...  VisualCのウィンドウ AppWizard ClassWizard  WizardBar 
← 参考ページ
 Vre5.0...  VisualCのウィンドウ AppWizard ClassWizard  WizardBar 
← 〃
ウィンドウを表示して見る(Ver4.0 Ver5.0)   ディスク容量   設定ファイルの数   正式版   C++ の復習   MFC の予習   [別ページ]→ デバッグ  内容

MFC : Microsoft VisualC++ にあらかじめ用意されている基幹的なクラス群。

T ウィンドウを表示してみる

ひとつのアプリケーションプログラムを作る場合でも、たくさんのフォルダやファイルが作られますので、それらを格納する場所をあらかじめ決めておきます。
専用のフォルダを作っておいた方が後で判り易くなります。
Ver4.0
プロジェクトの 種類 と 名前 を、二回に分けて別々に設定すること以外は Ver5.0 と同じです。
ファイルメニューの新規作成を選択します。

 → 新規作成のダイアログボックスが表示されます。( 1 )
プロジェクトワークスペースを選択し、OK をクリックします。

 → 新規プロジェクトワークスペースが表示されます。( 2 )
必要に応じて、位置ボックスに、プロジェクトの格納場所を指定します。
 例 C:\PRG\  一度設定すれば、変更しない限り次回もそのまま使えます。
 指定を省略すると、VisuslC++ をインストールしたフォルダの下に格納されます。

ワークスペースボックスに、これから作るプログラムの名前を入力します。
 例 XX
 この名前と同じ名前のフォルダが作られ、その中に各種のファイルが作られます。
 このフォルダは、位置ボックスに表示されます。

 例 C:\PRG\XX  プロジェクト名 XX とは違うフォルダ名にも変更できます。
OKをクリックします。( またはリターンキーを押します。)

 → アプリケーションウイザード(AppWizard)が起動します。( 3 )
終了をクリックします。
 ウィンドウのスタイルを指定したり、ヘルプファイルを付けたりする場合は、次へをクリックして順次設定していきます。
 → 作成内容の確認メッセージが表示されます。 OK をクリックします。
 → 必要なファイル群が作成されます。

ビルドボタンをクリックします。または F7 キーを押します。
 または、ビルドメニューのビルドを選択します。
 → すべてのソースファイルがコンパイルされ、ひとつにまとめられて、実行プログラムに変換されます。(ビルドされます。)

実行ボタンをクリックします。または F5 キーを押します。
 または、ビルドメニューの実行を選択します。
 → プログラムが起動し、ウィンドウが表示されます
Wizard(魔法使い) : 色々な設定を魔法使いのように簡単にやってくれるから ?

Ver5.0
新規作成のダイアログで プロジェクト名も設定してしまうこと以外は Ver4.0 と同じです。
ファイルメニューの新規作成を選択します。

 → 新規作成のダイアログボックスが表示されます。( 1, 2 )
プロジェクトタブを選択します。

 → 作成できるプロジェクトの 一覧が表示されます。
MFC AppWizard (exe)を選択し、OK をクリックします。

必要に応じて、位置ボックスに、プロジェクトの格納場所を指定します。
 例 C:\PRG\  一度設定すれば、変更しない限り次回もそのまま使えます。
 指定を省略すると、VisuslC++ をインストールしたフォルダの下に格納されます。

ワークスペースボックスに、これから作るプログラムの名前を入力します。
 例 XX
 この名前と同じ名前のフォルダが作られ、その中に各種のファイルが作られます。
 このフォルダは、位置ボックスに表示されます。

 例 C:\PRG\XX  プロジェクト名 XX とは違うフォルダ名にも変更できます。
OKをクリックします。( またはリターンキーを押します。)

 → アプリケーションウイザード(AppWizard)が起動します。( 3 )
終了をクリックします。
 ウィンドウのスタイルを指定したり、ヘルプファイルを付けたりする場合は、次へをクリックして順次設定していきます。
 → 作成内容の確認メッセージが表示されます。 OK をクリックします。
 → 必要なファイル群が作成されます。

ビルドボタンをクリックします。または F7 キーを押します。
 または、ビルドメニューのビルドを選択します。
 → すべてのソースファイルがコンパイルされ、ひとつにまとめられて、実行プログラムに変換されます。(ビルドされます。)

実行ボタンをクリックします。または F5 キーを押します。
 または、ビルドメニューの実行を選択します。
 → プログラムが起動し、ウィンドウが表示されます


AppWizard に慣れるためには、次のような操作があります。
ステップ1/6 で別なウィンドウを指定する。
ステップ4/6 で状況依存のヘルプを指定する。
ステップ4/6 の高度な設定で分割ウィンドウを指定する。
ステップ6/6 で CXXView を選択し、その基本クラスに EditView を指定する。
これらの指定は、ソースファイルを編集しなくてもウィンドウが表示されます。
ただし、これらを組み合せて指定した場合には(でたらめに組み合せた場合には)、うまく動作しない場合があります。

C言語の場合はソースファイルを作るだけで済みますが、VisualC++ の MFC 場合は、ソースファイルや画像ファイルなどがたくさんあり、それらの関係も複雑なので、全部まとめてプロジェクトと呼ばれます。

AppWizard では選択肢が限られているので、作ることができるプロジェクトの種類も限られます。
普通は AppWizard で目的に最も近いプロジェクトを作り、その後で、希望どおりのプログラムができるように、プロジェクトの中のソースファイルなどを編集します。
そのため、編集する前の AppWizard で作られたばかりのプロジェクトは、スケルトン(骨組み)と呼ばれます。

T 設定ファイルとディスク容量

ディスク容量について
プロジェクトをビルドすると、実行ファイルになる前の 中間ファイルが作られます。
プロジェクトの一部を変更したときに、変更されない部分のビルド時間を節約するために、これらのファイルは保存されます。

中間ファイルの保存場所は、プロジェクト名が XX の場合は、変更していなければ XX\Debug\ です。
これらのファイルの大きさは、単純なMFCプロジェクトでも数メガバイトになります。
プログラムが完成したら、Debug フォルダの中の中間ファイルを削除すれば、ハードディスクが広く使えます。

エクスプローラで すべて選択/削除しても、実行ファイルは 削除の確認メッセージが表示されるので、実行ファイルだけを残すことができます。
ソースファイルはその上の XX\ に 保存されていますから、残した方がよいと思います。


T 設定ファイルの数について
作成したプログラムを実行すると、Windows ディレクトリに 設定ファイルが作られます。
設定ファイルは、プログラムの数だけ作られます。
練習の為にたくさんのプログラムを作ると、その数だけ 設定ファイルが作られることになります。

練習の為のプログラムは、例えば名前を XX に統一すれば、設定ファイルはひとつで済みます。
私の場合は、プログラムが完成し、動作を確認したら、
 XXダイアログ
のように、プロジェクトが入っているフォルダ名を変えています。
( フォルダが違えば、同じ名前のプログラムファイルを保存できます。)

プロジェクトが入っているフォルダ名を変えるときは、VisualC でプロジェクトを閉じてからにします。
※ Windows ディレクトリに作られた設定ファイルは、削除してもかまいません。
※ 設定ファイルは、元になるプログラムを削除しても削除されません。


T デバッグ版と正式版 ( デバッグ版とリリース版 )
変更していなければ、デバッグ版のプログラムが作成されます。
デバッグ版には、プログラムの間違いを表示する部分が含まれています。
リリース ( release : 解放する、発表する、解放、封切り )バージョン

正式版を作るには
Vre4.0では、ビルド メニューの プロジェクトの標準構成 を選択します。
 → プロジェクトの標準構成 のダイアログが表示されます。
Vre5.0では、ビルド メニューの アクティブなプロジェクトの構成 を選択します。
 → アクティブなプロジェクトの構成 のダイアログが表示されます。

Win32 Debug が選択されているので、Win32 Relece を選択します。
OK をクリックします。
 → Relece フォルダが作られます。( エクスプローラで確認できます。)
ビルドします。



T C++ の復習

クラスの実体はオブジェクトです。
ソースファイルにはクラスの定義内容が書かれていますが、これはオブジェクトを作るための設計図に相当します。

ソースファイルにオブジェクトの宣言が書かれていると、C++ のコンパイラは、クラスの定義内容を参考にして実際のプログラムに変換します。
つまりクラスオブジェクトの関係は変数の型変数の関係に相当し、オブジェクトを宣言しなかったクラスは プログラムには変換されません。

従って、メンバを指定する場合は、クラスではなく実際に存在するオブジェクト名と共に指定します。

同じクラスのオブジェクトでも、設定したデータが異なれば別な機能を持ちます。
同じクラスのオブジェクトに含まれるメンバ関数は同じ物です。
しかし、メンバ関数は自分が含まれているオブジェクトのメンバデータを使うので、メンバデータの値が異なれば、メンバ関数の実行の結果は別々なものになります。

オブジェクトは、自動的に消滅するものと、そのまま残されるものがあります。
普通の変数やオブジェクトはスタック上に作られ、それを宣言した関数の動作が終了すると、自動的に消滅します。
スタック : プログラムがメモリに配置されるとき、変数やオブジェクト用に、プログラムの一部分としてあらかじめ確保されるメモリ。
{関数}や{クラス}の中で宣言したグローバル変数やオブジェクトと、static の指定をして宣言した変数やオブジェクトは、プログラムが終了するときに消滅します。
new で確保したメモリは、delete で消去するまで消滅しません。

クラスの派生は、クラスのコピーを作ることです。
コピー元のクラスは基本クラスといい、コピーして作った新しいクラスは派生クラスといいます。


T MFC の予習

メッセージ駆動型アプリケーションプログラム
Windowsでは、同時に複数のプログラムを起動しておくことができます。

キーボードやマウスからの入力はすべて OS プログラム(Windws 95 など)が受け取ります。
OS はウインドウの重なり具合などから、どのアプリケーションへの入力かを判別して、その入力をアプリケーションに渡します。

アプリケーションには、Windws 95 からのメッセージに対応する関数を設けておきます。
このメッセージに対応する関数はメッセージハンドラ ( 処理関数 ) と呼びます。
メッセージハンドラの中に、そのメッセージ(例えばマウスクリックなど)に対する処理を書きます。

アプリケーションウィザード(AppWizard) を使えば、Windws 95 からのメッセージを分類し、対応するメッセージハンドラを呼び出すまでのソースプログラムは勝手に作ってくれます。
ただ、何をするのかまではプログラムしてくれないので、AppWizard が作ったプロジェクトはスケルトン(skeleton : 骨組み)と呼ばれます。

また、メッセージの種類は決まっていますからそれに対応するメッセージハンドラの種類も決まっていて、必要なものだけをウイザードバー(WizardBar)で選べるようになっています。


MS-DOS アプリケーションプログラムとの違い
MS-DOS アプリケーションが起動して main が呼び出されると、主導権は MS-DOS から起動したアプリケーションに渡されます。
アプリケーションが MS-DOS の関数を使用する場合は、サブルーチンとして呼び出します(DOS コールを行います)。
しかし必要に応じて C または C++ の関数が DOS コールを行うので、プログラマが直接DOS コールを行うことは少ないと思います。

一方、Windows アプリケーションはメッセージハンドラ毎に動作が区切られ、それぞれのメッセージハンドラが別々に Windows から呼び出されます。
アプリケーションはメッセージハンドラを実行している間だけ、切れ切れに主導権を取ることになり、もしその処理に時間がかかるときは、普通は砂時計のアイコンを表示します。
ウィンドウズアプリケーションも名前のとおり OS(Windows)の関数を呼び出します(API 呼び出しを行います)。



T MFC で使われている名前など

X は大文、x は小文字です。
CXxxx : クラス名
Xxxx : 関数名
xxxx : 変数名, オブジェクト名  . . . このホームページでは大文字も使います。
m_xxx : 変数名(メッセージ)
pXxxx : 変数名(ポインタ)
XXXX : 構造体名, ID

//{{AFX について。
//{{AFX の行と、//}}AFX の行で囲まれたソースコードは、灰色で表示されます。
これは、メッセージ処理部分の 目印の記号で、プログラムとは関係ありません。
この目印は、クラスや関数を簡単に追加するための ClassWizard が使います。
もしこの記号を削除すると、ClassWizard を使ってハンドラ(メッセージ処理用の関数)を追加したりできなくなります。


T

MFC  1 文字列の表示
 
  mtoga@sannet.ne.jp   登録日 '96. 6.15
URL : http://www.page.sannet.ne.jp/mtoga/index.html