教材名 Visual C++とMFCライブラリの使い方
教材名2
教材ID 45
教材作成者名 唐木 薫
教材作成日 1997-09-10
改訂情報
ジャンル名 高度教材
分野名 情報・通信系
業種名 情報サービス業
職務名 プログラム作成・開発
職務構成名 OSの構造とプログラミング技術
区分名 教材
職業名 情報処理技術者
【Visual C++とMFCライブラリの使い方】指導案


イ. 使用教材、資材一覧
テキスト:「Visual C++によるMFCライブラリの使い方」
吉田弘一郎著 技術評論社 受講生数+1

 
補助教材:「Visual C++ 1」自作テキスト受講生数+1
テキストのソースプログラムを行番号を付加してプリ
ントアウトしたもの受講生数+1
 
 
フロッピーディスク 3.5インチ 受講生数×3

 
液晶プロジェクタおよびスクリーン 1セット

 
案内用掲示ポスター  会場    1枚

 

ロ. 訓練事前準備項目

・液晶プロジェクタの設置
・パソコンの電源をON(Visual C++のヘルプはハードディスクにインストール
しておく方が望ましい。もし、ハードディスク容量が足りない場合はエラー!
ブックマークが定義されていません。ドライプを接続し、各パソコンに1枚
Visual C++のCD-ROMが必要である。ライセンス契約の場合は要注意)
・テキスト、補助資料の配布(補助教材二つは違いが分かるようにファイルや表
紙の色を違わせておくほうがよい。)

ハ. 訓練項目と経過時間(指導展開法含む)

テキストの項目等 指導の展開
経過時間
導入 ○受講生受付
○講師自己紹介
○施設使用および昼食に関する説明、注意
○テキスト、補助資料の確認
10分
Visual C++とは ○Visual C++の現状、バージョン等における説明。
テキストの環境(Ver2.0をもとにしている)、セミナーで使用する環境 (Ver4.0を使用する)について。
○Visual C++は言語ではなくツールである。
○MFCという強力なクラスライブラリを持っている。
15分
例題1 ウィンドウを表示しよう(p.12-28) ○MS-DOSにおいてC言語で画面にHello Worldを表示するプログラムとC++言語で画面に表示するプログラムを説明。また、Windows APIを使って(MFCを使わないで )
Windows上でHello Worldを表示するプログラムの一部を説明。
○受講生にテキストのex01.cppを入力してもらい、動作確認後ソースコードを見ながらボイントを説明 -
尚、ここでVer4.0においてAppWizardをつかわないでアプリケーションを作成するための方法を説明する。
手順(1) プロジェクトの作成 手順(2) Aplicationの作成 手順(3) ソースコードの入力 手順(4) プロジェクトへの追加 手順(5) コンパイル 手順(6) 実行
また、オンラインヘルプの見方、定義位置の見方もex01.cppのソースを使って説明。
80分
  休憩
15分
例題2 コントロールを使ってウィンドウを表示しよう (p30-39) ○WindowsにおいてGUIがなぜ大切か、必要かを説明。
○MFCにおけるGUI部品の種類について。
○ex02.cppの説明 -
(1) イベントドリブン型のプログラムとは
(2) MFCのメッセージ処理方法は
(3) メッセージマップとは
(4) メッセージマップの書き方
(5) メッセージハンドラの書き方
○受講生にex02.cppを入力してもらい動作確認。
60分
  休憩
60分
例題3 ボタンとテキストのコント ロールで作るウィンドウ (p39-47) ○MFCのCButtonで作成できるボタンの種類について。ex03.cppの説明 、CButtonのCreate関数、CButtonCEdit、CStaticのメンバ関数を中心に
○受講生にex03.cppを入力してもらい動作確認。

[応用課題](時間のある受講生に)

<1> ラジオボタン1がONの時、プッシュボタンと同じようにテキストエディットの中身を取り込むようにする

<2> ラジオボタン2がONの時、テキストエディットの中身をクリアする。
80分
例題4 リストボックスでスクロールさせる

例題5 ミ コンボボックスを作る (p47-59)
○ex04.cppの説明 - CListBoxのメンバ関数を中心に
○ex04.cppの説明 ミ コンボボックスの種類、CComboBoxのメンバ関数を中心に

 受講生にex04.cpp、ex05.cppを入力してもらい
 動作確認。

[応用課題](時間のある受講生に)
<1> CBS_DROPDOWNLISTの場合の確認

1日目終了後、希望者にはフロッピィを配布し、入力したプログラムをコピーしてもらう。
85分
例題6 ミ 複数の水平スクロールバーを作る (p59-65) _ スクロールバーと他のコントロールの違いについて
_ ex06.cppの説明 ミ
(1) ON_COMMANDとON_WM_HSCROLLの違い
(2) OnHScrollの引数の意味
(3) CScrollBarのメンバ関数
受講生にex06.cppを入力してもらい動作確認。
[応用課題](時間のある受講生に)
適当な位置に垂直スクロールバーを作成する。
60分
例題7 ミ 読み込んだデータをグラフに表示する (p66-75) ○ディスプレィコンテクストとは何か。
○メニューを追加するにはどのようにすればよいか。
○ex07.rcの作成
手順(1) テキストファイルにテキストp71の
      内容を入力
手順(2) ex07.rcとして保存
手順(3) プロジェクトへの追加
手順(4) リソースペインでの見方

「ファイルを開く」ダイアログボックスがなぜ
 使えるか。
○ ex07.cppの説明 ミ
(5) GetDCとReleaseDC関数
(6) MyPaint(CDC *pDC)におけるpDC
(7) CDCのMoveTo, LineToメンバ関数
(8) OnPaintの内容およびどこで呼び出されるか。
(9) afxdlgs.hの役割
(10) ファイルからのデータ読み込み(Cの復習)
(11) DoModal関数

○受講生にex07.cppを入力してもらい動作確認。
(途中15分間の休憩受講生各自でとってもらう。)
80分
例題8 ミ ブラシで描く
(p76-81)
○ GDIオブジェクトとは

○色の作成(RGB)

○ex08.cppの説明
(1) ブラシの作成
(2) FillRectメンバ関数
(3) クライアント領域の取得
(4) クライアント領域の無効化
(5) タイマー (CTimer)
○受講生にex08.cppを入力してもらい動作確認。
40分
  休憩
60分
例題9 ミ ペンを自作する (p82-84) ○ex09.cppの説明
(1) CPenのコンストラクタ
(2) CDCのSelectObjectメンバ関数
(3) CDCのEllipseメンバ関数
○受講生にex09.cppを入力してもらい動作確認。

[応用課題](時間のある受講生に)
<1> 他のペンを(破線など)作成
<2> ハッチブラシの作成
50分
例題12 ミ ビットマップを表示する (p89-96) ○例題10、例題11のテキストをみながらの説明。
CFontについて。フォントの扱いは厄介であること。
また、別のパターンを3日目に実習してもらうことを述べて、受講生の確認は行わないこととする。
○ex12.rcの作成

手順(1) リソーススクリプトの新規作成
手順(2) リソースの挿入
手順(3) Bitmap選択
手順(4) 適当な絵を描く
手順(5) ex12.rcとして保存
手順(6) プロジェクトに追加
尚、メモ帳でex12.rc、resource.hの中身を確認してもらう。
○ビットマップオブジェクトを扱うための一連の手順
new ミ LoadBitmap ミ メモリデバイス上への展開 ミ 現在のデバイスへの展開
○ex12.cppの説明
(1) 上記の手順がどこで行われているかの確認
(2) CDCのBitBltメンバ関数
(3) CGdiObjectのGetObjectメンバ関数
○受講生にex12.cppを入力してもらい動作確認。
○ 時間のある受講生にはex11.cppも入力して確認してもらう。

(途中15分間の休憩受講生各自でとってもらう。)

100分
例題15 ミ ダイアログを作る(リソースの作成、ソース入力のみ) _ ex15.rcの作成

手順(1) リソーススクリプトの新規作成
手順(2) リソースの挿入
手順(3) Dialog選択
手順(4) テキストp111の図4-1のダイアログボックス
を作成
手順(5) ダイアログのIDを変更 ミ MYDIALOG
手順(6) エディットテキストのIDを変更 ミ 100,101
手順(7) ex15.rcとして保存
手順(8) プロジェクトに追加
_ 受講生にex15a.cppの入力してもらう。

2日目終了。適当なところで入力を終了してくださいと指示。
30分
例題15 ミ ダイアログを作る(説明) _ ダイアログの使い方 ミ クラスの作成、初期化、
 表示、終了
_ ex15.cppとex15a.cppの違い
_ ex15a.cppの説明
(1) CPersonの役割
(2) CMyDialogのコンストラクタと親クラスの
   コンストラクタへの引数の渡し方
(3) OnInitDialogでの処理
(4) OnOKでの処理
(5) OnButtonでの処理
_ ex15a.の動作確認。
40分
AppWizardの使い方 ミ Hello Worldを左隅に表示する。 (補助テキストp1-p9) _ テキストの第2部に進む前に補助資料を用いて
 以下のことをマスターすることを伝える。
1. Ver4.0のAppWizardの使い方
2. Ver4.0のClassWizardの使い方
3. メニュー、ツールバーの作り方
4. ダイアログのクラスの作成方法
5. マウスイベントなどに対する処理
_ AppWizardの使い方
_ 作成されるクラスとファイルの確認
_ デバッグモードとリリースモードについて
_ しばらくは表示の処理を行うViewクラス
 に対してコードを追加していくことを説明
_ TextOut関数の説明
_ なぜ、OnDrawに表示のコードを描くか。
 (WM-PAINTメッセージのしくみ)
_ 受講生にコードを追加してもらい動作確認。
60分
  休憩
15分
ClassWizardの使い方1ミ
ダイアログでHelloWorldを表示
(補助テキストp10-p12)
_ リソースにすでにあるものを確認
_ 新しいダイアログの作成
_ ClassWizardを起動しダイアログボックス
 のクラスを作成
_ Wizardを使ってもテキストの例題と同じ手順で
 ダイアログを表示させていることを確認
_ 受講生にコードを追加してもらい動作確認。
20分
ClassWizardの使い方2ミ
メニューの選択で表示
(補助テキストp13-p16)
_ メニューエディタを使ってのメニューの作成
_ メニュー選択時のハンドラの作成方法
 (OnMenuHelloの作成)
_ InvalidateRectメンバ関数の役割
_ 注意事項としてプログラムを簡単にするために現在
 はViewクラスで表示するテキストのCString型の変数を定義していることを説明
_ 受講生にコードを追加してもらい動作確認。
15分
ClassWizardの使い方3ミマウスイベント、キー入力で表示 (補助テキストp17-p24) マウスイベントで発行されるメッセージ
について説明
_ Viewクラスにメンバ関数を作る方法
手順(1) 関数の追加
手順(2) コードの編集
_ キーイベントで発行されるメッセージについて説明
_ OnKeyDownで渡される引数の内容について
_ COLORREF型について
_ 受講生にコードを追加してもらい動作確認。
30分
  休憩
60分
ツールバーで表示色を変更 (補助テキストp25-p24) _ ツールバーエディタを使ってのツールバーの作成
_ メッセージハンドラの作成
_ 受講生にコードを追加してもらい動作確認。
15分
ダイアログボックスの文字列をウィンドウに表示 (補助テキストp27-p29) _ DDX機能について
_ ダイアログボックスのメンバ変数の作成方法
_ 受講生にコードを追加してもらい動作確認。
25分
GDIオブジェクトを使って円を表示 (補助テキストp30-p41) _ GDIオブジェクトとはなにか。(復習)
_ Ellipse関数で円を描く。

_ OnDrawでペンを変更するパターン、マウスのイベントハンドラ
 で変更するパターンについて説明

_ ドラッグをしながら円を描く場合のコードの
 作成の仕方

_ SetROP2メンバ関数の役割
_ LOGFONT構造体について
_ すべてのパターン、受講生にコードを追加して
 もらい動作確認。
 ただし、フォントは時間のある人のみ。
50分
  休憩
15分
ドキュメント・ビュー構造 (p.142-148) (補助テキストp45-p49) _ ドキュメント・ビュー構造とは ミ
テキストの図6-3 ミ 図6-8を使って説明

_ 今までのAppWizardを使って作成したクラスを
 振り返り、Documentクラスについて説明。
_ OnDrawにすでに描かれている2行(GetDocumentと
 ASSERT_VALID)について説明。
補助テキストのp45-p49のコードを追加してもらい、
 動作確認。
50分
シリアライズ (p.130-141) (補助テキストp50-p52) _ シリアライズとは ミ
テキストの図5-1 ミ 図5-5を使って説明
_ CArchiveクラスについて
_ DocumentクラスのSelializeメンバ関数について
_ ar.IsStringでの書き込み、読み込みのわけ方
_ 補助テキストのp50-p52のコードを追加してもらい、
 動作確認
50分
  「おつかれさまでした。ファイルをコピーしたい方はフロッピーを配布しますので御自身が入力されたファイルをコピーしてください。」

_ 修了書授与
_ 質疑応答
 

※上記以外の資料(「教材」と「実技関連説明書」など)は、 こちら(ユーザ名=ユーザIDとパスワードが必要です)。
ユーザ名とは会員登録時に発行されたユーザIDを指します。
ユーザ名とパスワードをお持ちでない方は教材作成支援情報メニュー一覧から会員登録を行って下さい。